正则表达式——不区分大小写模式
第5章 匹配模式
所谓的匹配模式(match mode),指的是匹配时使用的规则。设置特定的模式,可能会改变对正则表达式的识别,也可能会改变正则表达式中字符的匹配规定。常用的匹配模式一共有4种:不区分大小、单行模式、多行模式、注释模式
5.1 不区分大小写模式
必须首先了解模式的指定方式。通常,有两种办法指定匹配模式:以模式修饰指定,或者以预定义的常量作为特俗参数传入指定。
语言 | test |
---|---|
.NET | RegexOptions.IgnoreCase |
Java | Pattern.CASE_INSENSITIVE |
JavaScript | /regex/i |
PHP | /regex/i |
Python | re.I re.IGNORECASE |
Ruby | Regexp::IGNORECASE /regex/i |
5.2 单行模式
单行模式对应的模式修饰符是s
(Single line),所以如果用模式修饰符,可以在表达式的开头用(?s)
(Python)指定。
语言 | test |
---|---|
.NET | RegexOptions.Singleline |
Java | Pattern.DOTALL |
JavaScript | 不支持此模式 |
PHP | /regex/s |
Python | re.S re.DOTALL |
Ruby | Regexp::MULTILINE /regex/m |
5.3 多行模式
单行模式影响的是点号的匹配规则:在默认模式下,点号.
可以匹配除换行符之外的任何字符,在单行模式下,点号.
可以匹配包括换行符在内的任何字符;多行模式影响的是^和&的匹配规则:
在默认模式下,^
和$
匹配的是整个字符串
的起始位置和结束位置,但在多行模式下,它们也能匹配字符串内部
某一行文本的起始位置和结束位置。
语言 | test |
---|---|
.NET | RegexOptions.Multiline |
Java | Pattern.MULTILINE |
JavaScript | /regex/m |
PHP | /regex/m |
Python | re.M re.MULTILINE |
Ruby | 默认即为多行模式 |
5.4 注释模式
注释模式对应的模式修饰符是x
(extended mode, 扩展模式,但更常见的写法是 free-spacing mode,宽松格式模式)。
语言 | test |
---|---|
.NET | RegexOptions.IgnorePatternWhitespace |
Java | Pattern.COMMENTS |
JavaScript | /regex/x |
PHP | /regex/x |
Python | re.X re.VERBOSE |
Ruby | Regexp::EXTENDED /regex/x |