标志

对于某些特殊情况,我们需要更改正则表达式的行为,这是使用标志完成的。标志可以通过 flags 关键字或直接在表达式中以两种方式设置。

标志关键字

下面是 re.search 的示例,但它适用于 re 模块中的大多数功能。

m = re.search("b", "ABC")  
m is None
# Out: True

m = re.search("b", "ABC", flags=re.IGNORECASE)
m.group()
# Out: 'B'

m = re.search("a.b", "A\nBC", flags=re.IGNORECASE) 
m is None
# Out: True

m = re.search("a.b", "A\nBC", flags=re.IGNORECASE|re.DOTALL) 
m.group()
# Out: 'A\nB'

常见的标志

标志 简短的介绍
re.IGNORECASEre.I 使模式忽略大小写
re.DOTALLre.S 使 . 匹配包括换行符在内的所有内容
re.MULTILINEre.M 使^匹配一行的开头,$ 匹配一行的结尾
re.DEBUG 打开调试信息

有关所有可用标志的完整列表,请查看文档

内联标志

来自文档

(?iLmsux)(来自’i’,‘L’,’m’,’s’,‘u’,‘x’的一个或多个字母。)

该组匹配空字符串; 字母设置相应的标志:re.I(忽略大小写),re.L(依赖于语言环境),re.M(多行),re.S(点匹配所有),re.U(取决于 Unicode),以及 re.X(详细),表示整个正则表达式。如果你希望将标志包含在正则表达式的一部分中,而不是将标志参数传递给 re.compile() 函数,这将非常有用。

请注意,(?x)标志会更改表达式的解析方式。它应该首先在表达式字符串中使用,或者在一个或多个空格字符之后使用。如果标志前面有非空白字符,则结果未定义。