正则表达式——不区分⼤⼩写模式
第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正则表达式不包含Python
re.M
re.MULTILINE
Ruby默认即为多⾏模式
语⾔test
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