re
正则表达式就是字符串的匹配规则
元字符: . ^ $ * + ? { } [ ] | ( ) \
. : 默认匹配的是除'\n'以外的所有字符 (在方法内指定flags = re.DOTALL,匹配任意字符)
^ : 从字符串的开头开始匹配 (在方法内指定falgs = re.MULTILINE,则会改变这种行为)
$ : 从字符串的结尾开始匹配 (在方法内指定falgs = re.MULTILINE,则会改变这种行为)
* : 匹配*前的字符0次以上
+ : 匹配+前的字符1次以上
? : 匹配?前的字符0次或1次
{ } : {m}匹配前一个字符m次,{m,n}匹配前一个字符m到n次(包含m和n)
[ ] : 字符集,从[ ]中任意匹配一个,[^]匹配任意一个不在[ ]中的字符
| : 或,匹配|左边或右边的字符
( ) : 组,在正则表达式的规则里会优先运行组里的表达式 (在( )里加?:可以取消组的优先级)
\ : 转义,把有特殊意义的字符转成字面意思
\A : 从字符串开头开始匹配,效果同^
\Z : 从字符串结尾开始匹配,效果同$
\d : 匹配数字0-9,效果同[0-9]
\D : 匹配非数字,效果同[^0-9]
\w : 匹配字母和数字,效果同[A-Za-z0-9]
\W : 匹配非字母、非数字,效果同[^A-Za-z0-9]
\s : 匹配空白字符,空格、\t 、\n、 \r
(?P<name>) : 用法:'(?P<name>\d+)'匹配数字
re.search('(?P<name>\d+)','abcd1234abcd1234').groupdict('name')#返回一个字典
re.search('(?P<name>\d+)','abcd1234abcd1234').group('name')#返回'name'对应的值
re模块的方法
re.compile(pattern [, flags]) : 传入pattern正则表达式,返回一个匹配对象。
reobj = re.compile('\d+') ,使用re.compile后,re.findall方法转换成reobj.findall,re模块其他的方法也作相同的转换
re.match(pattern, string): 从字符串开头开始匹配,没有匹配到返回None,反之返回_sre.SRE_Match对象
re.search(pattern, string, falgs): 返回string匹配到的第一个字符串的_sre.SRE_Match对象,没有匹配到则返回None
falgs参数:flags=re.MULTILINE(同re.M) 多行模式,改变'^'、'$'的行为
flags=re.DOTALL(同re.S) 使用这个参数,可以使'.'匹配到'\n'
flags=re.IGNORECASE(同re.I) 忽略大小写
flags=re.VERBOSE(同re.X) 可以给表达式写注释
re.findall(pattern, string, falgs): 返回字符串匹配到的列表
re.split(pattern, string, maxsplit, falgs): 返回被正则表达式切分后的列表,maxsplit为最大切分次数
re.sub(pattern, repl, string, count, falgs): 替换字符串中正则表达式匹配到子字符串,count参数为替换的次数
re.subn(pattern, repl, string, count, falgs): 替换字符串中正则表达式匹配到子字符串,并返回替换的次数,count参数为替换的次数
re.fullmatch(pattern, string, falgs): 完全匹配字符串,匹配不到返回None
re.finditer(pattern, string, falgs): 查找匹配的字符串,并返回一个iterator
来源:https://www.cnblogs.com/wuliwawa/p/9655673.html