我想知道如何在Perl中解决这种模糊模式(更一般地说,所有使用libpcre的内容):
当模式匹配到
谢谢。
/(\r\n|\r|\n)/
当模式匹配到
\r\n
时,它会匹配一次还是两次?针对这种情况的规则是什么?谢谢。
由于Perl使用正则表达式引擎,该引擎会急切地评估交替项,因此它将匹配\r\n
一次。请参见这里。
您可以轻松找出您打算使用的正则表达式引擎是文本定向还是正则表达式定向。如果可用反向引用和/或惰性量词,则可以确定引擎为正则表达式定向。您可以通过将正则表达式
regex|regex not
应用于字符串regex not
来进行测试。如果结果匹配仅为regex
,则引擎为正则表达式定向。如果结果为regex not
,则为文本定向。原因是正则表达式定向引擎是“急切”的。
/ (\r | \r\n | \ n) /
将匹配 \r
,然后是 \n
。 - Alan Moore它将尝试从左到右按顺序匹配以管道分隔的备选项。因此,第一个备选项将匹配整个字符串"\r\n"
,并且只会有一个匹配。这里没有歧义。