Perl中的RegExp错误

时间:2012-01-25 23:06:25

标签: regex perl

将regexp绑定到perl中的参数,我收到以下错误: syntax error at ./ctime.pl line 23, near "/^\((\d{2}):(\d{2})\)/)" Execution of ./ctime.pl aborted due to compilation errors.

以下是我尝试绑定它的行:

$_[0] =~ /^\((\d{2}):(\d{2})\)/)/;

我正在尝试匹配parens中的小时/分钟组合,例如(99:99(01:24)。总会有四位数。

2 个答案:

答案 0 :(得分:9)

$_[0] =~ /^\((\d{2}):(\d{2})\)/)/;

应该是

$_[0] =~ /^\((\d{2}):(\d{2})\)/;

您不小心在行尾附近复制了两个字符。


PS - 请注意,如果您尝试将$1或类似内容作为参数传递给包含此代码的函数,则会遇到问题,因为您直接使用$_[0]

sub f {
   print("$_[0]\n");              # a
   print $_[0] =~ /a/ ?1:0,"\n";  # 1
   print("$_[0]\n");              # [empty string]
   print $_[0] =~ /a/ ?1:0,"\n";  # 0
}
'a'=~/(.)/;
f($1);

答案 1 :(得分:2)

在结束前你还有一个额外的/)。违规行应该是:

$_[0] =~ /^\((\d{2}):(\d{2})\)/;