python中的正则表达式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中的正则表达式相关的知识,希望对你有一定的参考价值。

1、re.match函数

re.match尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话。match()就会返回none

语法:re.match(pattern,string,flags=0)

pattern:要匹配的正则表达式

string:目标字符串

flags:用于控制表达式的匹配方式,如:是否区分大小写,多行匹配等。

>>> print(re.match(www,www.ruboob.com).span())
(0, 3)#在起始位置匹配
>>> print(re.match(com,www.ruboo.com))
None#不在起始位置匹配

2、group()函数,获取匹配的表达式

>>> line = Cats are smarter than dogs
>>> p = re.match(r(.*) are (.*?) .*,line)
>>> p
<_sre.SRE_Match object; span=(0, 26), match=Cats are smarter than dogs>
>>> p.group()
Cats are smarter than dogs
>>> p.group(1)
Cats

3、re.search函数

re.search扫描整个字符串并返回第一个成功的匹配。

语法:re.search(pattern,string,flags)

4、re.search&re.match的区别

re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;

re.search匹配整个字符串,直到找到一个匹配。

5、检索和替换

python的re模块提供了re.sub用于替换字符串的匹配项

语法:re.sub(pattern,repl,string,count=0,flags=0)

flags英文意思:给特殊资料作标记的特别记号

参数:

pattern:正则中的模式字符串

repl:替换的字符串,也可以作为一个函数

string:要被查找的字符串

count:模式匹配后替换的最大次数,默认0表示替换所有的匹配

>>> phone = 2004-959-559 # 这是一个国外电话号码
>>> num = re.sub(r#.+,‘‘,phone)#去掉中文注释
>>> num
2004-959-559 
>>> num = re.sub(r\D,‘‘,phone)#去掉小横杠
>>> num
2004959559

repl是一个函数

import re

# 将匹配的数字乘于 2
def double(matched):
    value = int(matched.group(value))
    return str(value * 2)

s = A23G4HFD567
print(re.sub((?P<value>\d+), double, s))

#结果
A46G8HFD1134

 

以上是关于python中的正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

python 正则表达式

python 正则表达式 re模块基础

python基础学习(十三)

python基础学习笔记(十三)

通过 Java 正则表达式提取 semver 版本字符串的片段

python成长之路第三篇_正则表达式