Regex 正则表达式引擎如何解析锚
有人能解释一下正则表达式引擎在尝试匹配时是如何工作的吗Regex 正则表达式引擎如何解析锚,regex,Regex,有人能解释一下正则表达式引擎在尝试匹配时是如何工作的吗 ^4$ to 749\n486\n4 我指的是正则表达式引擎在执行匹配时如何解析字符串。正则表达式^4$表示匹配一行,该行只包含一个数字4 如果将此regexp应用于包含换行符的字符串,则它会将字符串的第一个字符视为行首,将第一个换行符视为行尾。换行符后的其他字符实际上被忽略。perl中的示例 DB<1> $str="749\n486\n4"; DB<2> x $str =~ /^4$/ empt
^4$ to 749\n486\n4
我指的是正则表达式引擎在执行匹配时如何解析字符串。正则表达式
^4$
表示匹配一行,该行只包含一个数字4
如果将此regexp应用于包含换行符的字符串,则它会将字符串的第一个字符视为行首,将第一个换行符视为行尾。换行符后的其他字符实际上被忽略。perl中的示例
DB<1> $str="749\n486\n4";
DB<2> x $str =~ /^4$/
empty array
然而,regexp实现有一种方法来处理这个问题。存在多行设置。在perl中
DB<3> x $str =~ /^4$/m
0 1
DB x$str=~/^4$/m
0 1
用python
>>> re.search('^4$',s,re.MULTILINE)
<_sre.SRE_Match object at 0x7f446874b030>
>re.search(“^4$”,s,re.MULTILINE)
python文档这样解释多行模式
关于多行
指定时,模式字符“^”在字符串的开头和结尾处匹配
每行的开头(紧跟其后
每条新线);并且模式字符“$”在
字符串,并在每行末尾(紧靠每行前面
新行)。默认情况下,“^”仅在字符串开头匹配,
和“$”仅在字符串末尾和
字符串末尾的换行符(如果有)
如果在多行字符串中,您真的想知道它是否在一行上以数字4结尾,那么这有一个语法特性
DB<4> x $str =~ /^4\z/m
0 1
DB x$str=~/^4\z/m
0 1
请特别参阅m标志和\a、\z、\z
或者看看
DB<4> x $str =~ /^4\z/m
0 1