使用Perl中的Regex从用户输入中提取信息

时间:2014-05-20 04:18:20

标签: regex perl

我试图只访问这部分用户输入。例如。如果用户输入文件名,如/file/path/test_324_3422.jpg

我想只获得测试,324和3422

我一直在尝试这个,但它不起作用:

#!/usr/bin/perl

if(@ARGV != 1){
    print "Error\n";
}
else{
    my $input = $ARGV[0];
    $input =~ /(.)_([\d]+)_([\d]+)/
    print $1, "\n";


}

1 个答案:

答案 0 :(得分:1)

捕获组内的点.仅匹配单个字符。

您只打印$1,这是第一个捕获组的匹配项。如果您还想显示这些捕获组的匹配项,还需要$2$3

my $input =~ /([a-zA-Z]+)_(\d+)_(\d+)/;
print join(', ', $1, $2, $3), "\n";

如果这不符合您的需求,请为您的第一个捕获组使用否定匹配。

my $input =~ /([^\/_]+)_(\d+)_(\d+)/;