re模块中常用的函数及分组
match函数:
从开始位置进行匹配,如果开始位置没有匹配到,就直接失败。
text = "hello world" ret = re.match("h",text) print(ret.group())
search函数:
在字符串中找满足条件的字符,如果找到,就返回。说白了,就是只会找到第一个满足条件的。
text = "hello world ni hao!" ret = re.search("h",text) print(ret.group())
匹配结果是 h,而不会出现两个 hh。
findall函数:
找出所有满足条件的字符,返回的是一个列表。
text = "It's price $99,others' price is $10." ret = re.findall("\$\d+",text) print(ret)
匹配结果:['$99', '$10'] (按匹配顺序输出)。
sub函数:
用来替换字符串,将匹配到的字符串替换为其他字符串。
text = "It's price $99,others' price is $10." ret = re.sub("\$\d+","$0",text,1) print(ret)
匹配结果:It's price $0,others' price is $10
sub()函数中有四个参数:第一个是正则表达式,第二个是替换的字符串,第三个是目标字符串,第四个参数是替换的个数(默认将所有满足条件的替换掉)。
split函数:
使用正则表达式来分割字符串,返回一个列表。
text = "hello world" ret = re.split("[^a-zA-Z]",text) print(ret)
分组group:
在正则表达式中,可以对过滤的字符串进行分组。分组使用圆括号的方式。
1.group()和group(0)是等价的,返回的是整个满足条件的字符串。
2.group()返回的是里面子组。索引从1开始。
3.group(1)返回的是第一个子组,可以传入多个。
text = "It's price $99,others' price is $10." ret = re.search(".*(\$\d+).*(\$\d+).",text) print(ret.group()) print(ret.group(1)) print(ret.group(2)) print(ret.group(2,1)) print(ret.groups(0))
其中 print(ret.group()) 和 print(ret.groups(0)) 输出的结果是一样的:It's price $99,others' price is $10.
而 print(ret.group(1)) print(ret.group(2)) print(ret.group(2,1)) 为只提取满足圆括号的字符串,即为:$99 $10 $10 $99 。