Python3 re正则的基本使用方法

  flags常用常量

  re.I 全写re.IGNORECASE,忽略大小写

  import re

  string = '123Aa123'

  re.search('aa', string) # None

  re.search('aa', string, re.I) # Aa

  re.A 全写re.ASCII,让\w、\b、\s、\d等特殊字符只匹配ASCII码,而不是匹配Unicode

  import re

  string = '我爱你520Love'

  re.search('\w+', string) # '我爱你520Love'

  re.search('\w+', string, re.A) # '520Love' 因为中文不在ASCII表

  re.S 全写re.DOTALL让.匹配所有字符,包括\n换行符

  import re

  string = '123.\n123'

  re.search('3.*?3', string) # None

  re.search('3.*?3', string, re.S) # '3.\n123'

  re.M 全写re.MULTILINE,多行模式,用^可以匹配多行模式下的开头。默认只能匹配第一个开头

  import re

  string = '123\n123'

  re.findall('^\d2', string) # ['12']

  re.findall('^\d2', string, re.M) # ['12', '12']  郑州治疗胎记哪家好 http://www.zzzykdmlk

  四、结合例子

  1、比如匹配整个HTML页面的图片.

  PS::需要注意的是 如果findall()里面包含有() 他会为里面的()分组,如果我们不在最外边加括号的话,那么我们只能得到他里面() 给我们所分的组。那为什么match() search()又不需要呢,是他们默认最外层有(括号)

  # 页面源码是html

  import re

  imglist = re.findall('(http(s)?://.*?(png|jpg))', html) # 返回列表[('最外层括号内容','顺序括号内容1', '顺序括号内容2'), ]

  # 例如

  html = 'url(http://img.baidu.com/img/baike/logo-baike.jpg)sfseurl(https://img.baidu.com/img/baike/logo-baike.png)'

  imglist1 = re.findall('https{0,1}://.*?\.(png|jpg)', html) # 不加括号,他只得到图片后缀 既 imglist1 = ['jpg', 'png']

  imglist2 = re.findall('(https{0,1}://.*?\.(png|jpg))', html)

上一篇:正则表达式库re


下一篇:常用模块