我试图使用以下方法捕获字符串中的匹配项:
$String = "Feb122013Jan222013";
my @Matches = ($String =~ /((Jan|Feb)\d\d\d\d\d\d)/g);
foreach (@Matches)
{
printf("[$_]\n");
}
这将打印以下内容。
[Feb122013]
[Feb]
[Jan222013]
[Jan]
如何摆脱1月和2月的印刷?即只将整个正则表达式匹配分配给数组元素并忽略子匹配?
答案 0 :(得分:3)
使用(?:Jan|Feb)
代替(Jan|Feb)
。见(?:pattern)
in perldoc perlre
:
这是用于聚类,而不是捕获;它将子表达式组合为
()
,但不会像()
那样进行反向引用。