大前提:出现在python中的re模块,出现的匹配规则,
第一:斜杠都是反斜杠();
第二:默认情况下,都为匹配为贪婪模式;
第三:返回值都是列表数据类型,当没有匹配到会匹配为空列表。
非贪婪模式:当我们进行一次正则匹配,例如同时匹配ab,abb,abbbb,规则会将这一次匹配结果为ab,贪婪则会匹配为abbbb,b次数最多的一次。
代码如下:res = re.findall(r'ab*?','abbbbbbb') ?:转化为非贪婪模式。
分组:
()分组,将括号的结果,放到列表里面。
(?:) 取消分组,只是作为整体的作用;
(?p<name>) 有名分组 ,就是正则匹配的结果。分组的编号是按照前后的顺序排列的。
正则其他方法:
splite:切分分割,返回为一个列表
re.splite(r'[,@]',s)将S里面的字符按照都还,@符进行匹配。
sub替换:
re.sub("python",'Py',s,count=1)
将python替换成Py字符,并将字符print除来。
匹配汉字:[u4e00-u9fa5]
s:空格,制表符,换行符。
.:会匹配除过 以外的所有字符。
re.S:会让.能匹配所有的单个字符。
{n}匹配的次数{n,m},或者{n,m}表示的次数。
‘ab?’:表示b匹配0到1个。
? 匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "does" 。? 等价于 {0,1}。
多行匹配:
re.M:进行多行匹配。 s="""
http:skjfhasu.com
hhhhhh
https:\sawff.cn
"""
print(re.findall(r'^[httphttps].+com$',s,flags=re.M))
返回值:的是一个空列表或者一个列表。
剩下的需要我们,一边查一边用。