如果需要对一个正则表达式重复使用,那么可以使用pile()函数对其进行预编译,以避免每次编译正则表达式的销。plie()函数语法格式如下:
pile(pattern,flags=0)
上述格式中的参数pattern表示一个正则表达式,参数flags用于指定正则匹配的模式,该参数的常用取值如表1所示。
表11-1常用的匹配模式
flags
说明
re.I
忽略小写
re.L
本地化识别(locale-aware)匹配,使预定义字符集\w、\W、\b、\B、\s、\S取决于当前区域设定
re.M
多行匹配,影响^和$
re.S
使.匹配所有字符,包括换行符
re.U
根据Unicode字符集解析字符
re.A
根据ASCII字符集解析字符
re.X
允许使用更灵活的格式(可以多行、忽略空白字符、可加入注释)书写正则表达式,以便表达式更易理解
正则匹配多行
importre
regex_obj=re.pile(r'\d')
以上第2行代码中,通过pile()函数将正则的匹配模式“\d”预编译为正则对象regex_obj。
假设当前有一组字符串“TodayisMarch28,2019.”,通过正则对象regex_obj的findall()方法就可以查到所有的匹配结果,示例代码如下:
words='TodayisMarch28,2019.'
print(regex_obj.findall(words))
以上示例中的findall()函数用于获取目标文本中所有符合条件的内容。
运行代码,结果如下所示:
['2','8','2','0','1','9']
如果想要匹配一组字符串中所有的英文字母,可通过设置flags参数忽略英文字母的小写,具体代码如下:
importre
regex_one=re.pile(r'[a-z]+',re.I)
words='TodayisMarch28,2019.'
print(regex_one.findall(words))
上述代码中的匹配模式“[a-z]+”表示匹配最少匹配一次小写英文字母,当设置flags参数为re.I后该匹配模式便会忽略英文字母的小写,匹配结果将会包含字符串words中的所有英文字母。
运行代码,结果如下所示:
['Today','is','March']

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。