跳到主要内容

regex_tips

关于单行和多行模式

结论

单行模式或者多行模式,只是跟匹配有关,跟文本本身是单行还是多行无关。

使用单行模式,仅仅是把.的含义更改了,让.可以匹配换行符

而使用多行模式,仅仅是把^$的含义改了,让他们匹配的不是整个文本的开始和结束,而是文本中每一行的开始和结束

单行模式

正则表达式开头加上(?s)就可以开启单行模式

使得通配符.匹配所有的字符,包括换行符(而默认情况下,.表示除换行符之外的其他所有字符)

比如在一个多行文本字符串中,(?s).*匹配所有字符,包括换行符 (?s)代表开启单行模式

多行模式

正则表达式开头加上(?m)就可以开启多行模式

使得^ $匹配到每行字符串的开头和结尾处,而不是整个字符串的开头和结尾

比如在一个多行文本中(?m)^(and|or).*?$匹配所有以and或者or开头的行

网上资料参考

(?i) 表示所在位置右侧的表达式开启忽略大小写模式 (?s) 表示所在位置右侧的表达式开启单行模式 (?m) 表示所在位置右侧的表示式开启指定多行模式 (?is) 更改句点字符 (.) 的含义,以使它与每个字符(而不是除 \n 之外的所有字符)匹配 (?im) 更改 ^ 和 $ 的含义,以使它们分别与任何行的开头和结尾匹配,而不只是与整个字符串的开头和结尾匹配

注意:(?s)通常在匹配有换行的文本时使用 注意:(?m)只有在正则表达式中涉及到多行的“^”和“$”的匹配时,才使用Multiline模式

注意:上面的匹配模式可以组合使用,比如(?is),(?im) 另外,还可以用(?i:exp)或者(?i)exp(?-i)来指定匹配的有效范围