Perl、Kikki 和 Kodos 之间正则表达式处理的差异

Perl、Kikki 和 Kodos 之间正则表达式处理的差异
#!/usr/bin/perl

$mystring = "[2004/04/13] The date of this article.";
if($mystring =~ m/(\d+)/) {
        print "The first number is $1.";
}

Perl 回归2004,但 Kiki 和 Kodos 回归/04/。为什么?

答案1

由于您没有提供 Python 代码(或者 Kiki 和 Kodos 是什么),所以很难确定,但我的猜测是 Kiki 和 Kodos 的模式语法与 Perl 不同,因为您不需要正斜杠分隔符。例如,Python 中的等效项是:

import re
m = re.search('(\d+)', "[2004/04/13] The date of this article.")
print m.group(0)

请注意,该模式不包含正斜杠。

答案2

在 Perl 中,重要的是要认识到正则表达式运算符不是m,而是双斜杠 - /..../....实际上是正则表达式)。m如果您使用 ,则 是可选的/

以下都是等效的:

$mystring =~ m/(\d+)/;

$mystring =~ /(\d+)/;

$var = '(\d+)';
$mystring =~ /$var/;

相关内容