Perl正则表达式输出连字符多个"单词"

时间:2014-06-26 21:50:22

标签: regex perl

当我有一个包含多个连字符的字符串时,我似乎能够找到(唯一)所需的值,但为什么有多个输出?我想用连字符完全报告匹配的字符串。我已经包含了输出可能是什么,以及重建字符串的方法,但这种方法似乎是不必要的工作。

my $string = "phonenumber123-456-7890";
my @secondStrings = $string =~ m/(\d+)-(\d+)-(\d+)/g;
foreach (@secondStrings){
    print $_, "\n";
}
if ($string =~ m/(\d+)-(\d+)-(\d+)/g){
    print $1."-".$2."-".$3, "\n";
}

1 个答案:

答案 0 :(得分:2)

我相信您只想将整个电话号码(123-456-7890)放入1个捕获组中,此时您正在使用3个。

my ($number) = $string =~ m/(\d+-\d+-\d+)/g;

可以在此处找到进一步阅读:http://perldoc.perl.org/perlre.html#Capture-groups