高频正则表达式

大前提:出现在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:空格,制表符,换行符。

.:会匹配除过\n以外的所有字符。

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))

返回值:的是一个空列表或者一个列表。


剩下的需要我们,一边查一边用。

posted @ 2019-08-15 21:37  企鹅向前囱  阅读(149)  评论(0编辑  收藏  举报