2011-02-19 46 views
0

寻找这个perl正则表达式的帮助。perl正则表达式帮助匹配不同的数字值

我需要提取(3)从这个文件名的项目:abc101.name.aue-abc_p002.20110124.csv

ABC 101。名称。 aue -abc_p 002 .20110124.csv

其中项目(3)在本例中002,也可以是4位的最高0002

这是我工作的非正则表达式:

while (my $line=<>) { 
    chomp $line; 
    if ($line =~ m/abc(d{3}).name.(w{3})_p([0-9]).[0-9].csv/) { 
     print $1; 
     print $2; 
     print $3; 
    } 
    } 

回答

1
while (my $line=<>) { 
    chomp $line; 
    if ($line =~ /^abc(\d{3})\.name\.(\w{3})-abc_p(\d{1,4})\.\d+.csv$/) { 
    print $1; 
    print $2; 
    print $3; 
    } 
} 
+0

你的意思是最后一个点是文字吗? – sln 2011-02-19 16:46:18

0

你缺少了几个加号(或{}量词)和转义点: abc(d{3})\.name\.(w{3})_p([0-9]{3,4})\.[0-9]+\.csv/

0

未经测试:/^abc(\d{3})\.name\.([a-z]{3})-abc_p(\d{1,4})\.\d+\.csv$/