1、re.IGNORECASE
语法: re.IGNORECASE 或简写为 re.I
作用: 进行忽略大小写匹配。
结果: 在默认匹配模式下大写字母N无法匹配小写字母n,而在忽略大小写模式下是可以的
import re text='你的名字叫什么n' pattern=r'你的名字叫什么N' print("默认模式:",re.findall(pattern,text)) print('忽略大小写模式:',re.findall(pattern,text,re.IGNORECASE)) print('忽略大小写模式:',re.findall(pattern,text,re.I))
输出结果:
默认模式: []
忽略大小写模式: ['你的名字叫什么n']
忽略大小写模式: ['你的名字叫什么n']
2、ASCII
语法: re.ASCII 或简写为 re.A
作用: 顾名思义,ASCII表示ASCII码的意思,让\w, \W, \b,\B,\d,\D,\s 和\S 只匹配ASCII,而不是Unicode。
结果:在默认匹配模式下\\w+匹配到了所有字符串,
而在ASCII模式下,只匹配到了i、I、China(ASCII编码支持的字符)
import re text='i我和我I的祖国China' pattern=r'\w+' print('Unicode:',re.findall(pattern,text)) print('ASCII:',re.findall(pattern,text,re.A))
输出结果:
Unicode: ['i我和我I的祖国China']
ASCII: ['i', 'I', 'China']
3、DOTALL
语法: re.DOTALL 或简写为 re.S
作用: DOT表示.,ALL表示所有,连起来就是.匹配所有,包括换行符\n。
默认模式下.是不能匹配行符\n的
结果: 在默认匹配模式下.并没有匹配换行符\n,而是将字符串分开匹配;而在re.DOTALL模式下,换行符\n与字符串一起被匹配到。
import re text='我和\n我的\n祖国' pattern=r'.*' print('默认模式:',re.findall(pattern, text)) print('默认模式:',re.findall(pattern, text,re.S))
输出结果:
默认模式: ['我和', '', '我的', '', '祖国', '']
默认模式: ['我和\n我的\n祖国', '']
4、MULTILINE
语法: re.MULTILINE 或简写为 re.M
作用: 多行模式,当某字符串中有换行符\n,
默认模式下是不支持换行符特性的,比如:行开头 和 行结尾,而多行模式下是支持匹配行开头的。
结果: 正则表达式中^表示匹配行的开头,默认模式下它只能匹配字符串的开头;而在多行模式下,它还可以匹配 换行符\n后面的字符
import re text='我和\n我的\n祖国' pattern=r'^祖国' print('默认模式:',re.findall(pattern,text)) print('多行模式:',re.findall(pattern,text,re.M))
输出结果:
默认模式: []
多行模式: ['祖国']
5、VERBOSE
语法: re.VERBOSE 或简写为 re.X
作用: 详细模式,可以在正则表达式中加注解!
结果: 默认模式下并不能识别正则表达式中的注释,而详细模式是可以识别的。当一个正则表达式十分复杂的时候,详细模式或许能为你提供另一种注释方式,但它不应该成为炫技的手段,建议谨慎考虑后使用!
import re text='我和我的祖国' pattern=r""" ^我和# me and 我的祖国 #my country """ print('默认模式:',re.findall(pattern,text)) print('详细模式:',re.findall(pattern,text,re.X))
输出结果:
默认模式: []
详细模式: ['我和我的祖国']