正则表达式——不区分大小写模式

第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
posted @ 2018-12-10 16:08  gaara724  阅读(7222)  评论(0编辑  收藏  举报