perl正则表达式与数字匹配

时间:2014-02-20 18:34:11

标签: regex perl

我正在尝试匹配以下内容(下面是一个名为@abc的数组):

goo foo tool: 1.2.1 (a3 change: 234342 @ 2014/02/19 14:20:27)

my $match = "goo foo tool: (\d+)\.(\d+)\.(\d+) \(a3 change: \d+ @ #DATE# #TIME#\)";

在我的代码中,

 78     foreach (@abc){
 79         print "$_\n";
 80         if ($_ =~ m/$match/){
 81             print "$1\n";
 82         } else {
 83             print "not matched\n";
 84         }
 85     }

我不明白为什么打印“不匹配\ n”;
其他人都知道为什么?

1 个答案:

答案 0 :(得分:3)

#DATE#和#TIME#字符串常量与您拥有的日期不匹配。只需调整到正则表达式即可实际匹配这些值:

my $match = "goo foo tool: (\d+)\.(\d+)\.(\d+) \(a3 change: \d+ \@ \d+/\d+/\d+ \d+:\d+:\d+\)";