从字符串中提取正则表达式匹配项

时间:2013-06-04 18:54:42

标签: regex perl pattern-matching

我试图使用以下方法捕获字符串中的匹配项:

$String = "Feb122013Jan222013";    
my @Matches = ($String =~ /((Jan|Feb)\d\d\d\d\d\d)/g);    
foreach (@Matches)
{
    printf("[$_]\n");
}

这将打印以下内容。

[Feb122013]
[Feb]
[Jan222013]
[Jan]

如何摆脱1月和2月的印刷?即只将整个正则表达式匹配分配给数组元素并忽略子匹配?

1 个答案:

答案 0 :(得分:3)

使用(?:Jan|Feb)代替(Jan|Feb)。见(?:pattern) in perldoc perlre

  

这是用于聚类,而不是捕获;它将子表达式组合为(),但不会像()那样进行反向引用。