2011-02-19 75 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$/