标志
对于某些特殊情况,我们需要更改正则表达式的行为,这是使用标志完成的。标志可以通过 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.IGNORECASE ,re.I |
使模式忽略大小写 |
re.DOTALL ,re.S |
使 . 匹配包括换行符在内的所有内容 |
re.MULTILINE ,re.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)标志会更改表达式的解析方式。它应该首先在表达式字符串中使用,或者在一个或多个空格字符之后使用。如果标志前面有非空白字符,则结果未定义。