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中的正则表达式的主要内容,如果未能解决你的问题,请参考以下文章