正则表达式-单⾏与多⾏模式
多⾏模式:
Multiline修饰的是^与$,就是说没有Multiline的时候,把^和$与当作每⼀⾏(\n结尾的)的开头和结束来匹配,有Multiline的时候是与整个字符串的开头和结尾匹配;正则表达式任意内容
单⾏模式:(开启则“ . ”号会匹配所有字符,不开启则匹配除了换⾏符之外的所有字符)
⽽Singleline修饰的是'.'的时候,就是说有Singleline的时候匹配的是所有字符(包括\n),没有Singleline的时候,匹配的是除\n外的所有字符。
实现正则表达式匹配任意字符的真相:
使⽤“.”匹配⼏乎任意字符。在正则表达式中,“.”是最常⽤的符号之⼀。不幸的是,它也是最容易被误⽤的符号之⼀。
“.”匹配⼀个单个的字符⽽不⽤关⼼被匹配的字符是什么。唯⼀的例外是新⾏符。在本教程中谈到的引擎,缺省情况下都是不匹配新⾏符的。因此在缺省情况下,“.”等于是字符集[^\n\r](Window)或[^\n]( Unix)的简写。
这个例外是因为历史的原因。因为早期使⽤正则表达式的⼯具是基于⾏的。它们都是⼀⾏⼀⾏的读⼊⼀个⽂件,将正则表达式分别应⽤到每⼀⾏上去。在这些⼯具中,字符串是不包含新⾏符的。因此“.”也就从不匹配新⾏符。
现代的⼯具和语⾔能够将正则表达式应⽤到很⼤的字符串甚⾄整个⽂件上去。本教程讨论的所有正则表达式实现都提供⼀个选项,可以
使“.”匹配所有的字符,包括新⾏符。在RegexBuddy, EditPad Pro或PowerGREP等⼯具中,你可以简单的选中“点号匹配新⾏符”。在Perl 中,“.”可以匹配新⾏符的模式被称作“单⾏模式”。很不幸,这是⼀个很容易混淆的名词。因为还有所谓“多⾏模式”。多⾏模式只影响⾏⾸⾏尾的锚定(anchor),⽽单⾏模式只影响“.”。
其他语⾔和正则表达式库也采⽤了Perl的术语定义。当在.NET Framework中使⽤正则表达式类时,你可以⽤类似下⾯的语句来激活单⾏模式:Regex.Match(“string”,”regex”,RegexOptions.SingleLine)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。