定义一些规则,比如是否忽略大小写,是否多行
在MULTILINE模式下match()只匹配字符串的开头,而使用search()与以'^'开头的正则表达式匹配每行的开头
re.match('X', 'A\nB\nX', re.MULTILINE) # No match
re.search('^X', 'A\nX\nX', re.MULTILINE) # Match
a = re.compile(r"""\d + # the integral part
\. # the decimal point
\d * # some fractional digits""", re.X)
b = re.compile(r"\d+\.\d*")
(?aiLmsux)
(?号后面跟着’a’,‘i’,‘L’,‘m’,‘s’,‘u’,'x’的一个或多个字母)。这些字母设置相应的标志:re.A(仅ASCII匹配),re.I(忽略大小写),re.L(依赖于语言环境),re.M(多行),re.S(点匹配全部) ,re.U(Unicode匹配)和re.X(详细),用于整个正则表达式。这些标志的作用在模块内容中有具体的描述。事实上,这些标志可以通过flag参数传给正则表达式,也可以像这样直接写进正则表达式里面。
(?aiLmsux-imsx:...)
(来自’a’,‘i’,‘L’,‘m’,‘s’,‘u’,‘x’的零个或多个字母,可选地后面跟着’ - ‘,后面跟着一个或多个来自’’,‘m’,‘s’,‘x’)。字母设置或删除相应的标志.,比如,你想要找superMAN对前面的super的大小写无所谓,但要求MAN一定是大写,可以这样写 (?i)super(?-i:MAN)这样 sUpeRMAN能匹配,而superMan则不能匹配
flag | 描述 |
---|---|
re.A == re.ASCII | 使\w,\W,\b,\B,\d,\D,\s和\S执行仅ASCII匹配而不是完全Unicode匹配。 |
re.I == re.IGNORECASE | 执行不区分大小写的匹配; 像[A-Z]这样的表达式也将匹配小写字母。 |
re.L == re.LOCALE | 根据当前语言环境,使\ w,\ W,\ b,\ B和不区分大小写的匹配。 |
re.M == re.MULTILINE | 指定时,模式字符’^‘匹配字符串的开头和每行的开头(紧跟在每个换行符之后); 并且模式字符’KaTeX parse error: Expected group after '^' at position 35: …个换行符之前)。默认情况下,'^̲'只匹配字符串的开头,''只匹配字符串的末尾 |
re.S == re.DOTALL | ‘.’ 特殊字符完全匹配任何字符,包括换行符; 没有这个标志,’.’ 将匹配除换行符之外的任何内容。 |
re.X == re.VERBOSE | 该标志允许您通过一种编辑模式来编写正则表达式, |
参考:
https://www.jianshu.com/p/147fab022566