我试图只访问这部分用户输入。例如。如果用户输入文件名,如/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";
}
答案 0 :(得分:1)
捕获组内的点.
仅匹配单个字符。
您只打印$1
,这是第一个捕获组的匹配项。如果您还想显示这些捕获组的匹配项,还需要$2
和$3
。
my $input =~ /([a-zA-Z]+)_(\d+)_(\d+)/;
print join(', ', $1, $2, $3), "\n";
如果这不符合您的需求,请为您的第一个捕获组使用否定匹配。
my $input =~ /([^\/_]+)_(\d+)_(\d+)/;