python中的正则表达式,,1、re.match


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# 将匹配的数字乘于 2def double(matched):    value = int(matched.group(‘value‘))    return str(value * 2)s = ‘A23G4HFD567‘print(re.sub(‘(?P<value>\d+)‘, double, s))#结果A46G8HFD1134

python中的正则表达式

评论关闭