1

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

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

这将打印以下内容。

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

我怎样才能摆脱 Jan 和 Feb 打印?即仅将整个正则表达式匹配分配给数组元素并忽略子匹配?

4

1 回答 1

3

使用(?:Jan|Feb)而不是(Jan|Feb). 见:(?:pattern)_perldoc perlre

这是用于聚类,而不是捕获;它对子表达式进行分组(),但不进行反向引用()

于 2013-06-04T18:56:13.637 回答