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)来指定匹配的有效范围