2016-08-11 91 views
-2

我有以下Perl代碼:正則表達式匹配[0-9] - [A-Z0-9] .wav格式

perl -ane 'm|/(..)/([1-9zo]+[ab])\.wav| || die "bad line $_"; print "$1_$2 $_";' 

代替匹配像/m/ad/11b.wav文件路徑我需要匹配像一個文件路徑:

/m/6-23E5CD3A14BC47154F29E25578FC4.wav 
+1

歡迎堆棧溢出。如果將正則表達式放入程序的標題中會發生什麼?您需要調整斜線之間匹配兩個字符的部分以允許一個字符;你需要在第二個字符類後添加一個合適的量詞。但這只是一切。 –

+0

看起來你實際上只限於十六進制字符,所以'[0-9A-Z]'可能太寬泛了。像'm | /./ [0-9] - [0-9A-F] {29} \。wav |'。你也可以使用'[[:xdigit]]' – shawnt00

回答

-1

你想要什麼形式的$ 1和$ 2?你想讓$ 1變成「/ m」嗎? 你想要2美元是「6-23 ...」嗎?還有別的嗎?

m|(..)/([[:digit:][:upper:]-]+)(?>\.wav)$| || die; print "$1_$2 $_"; 

此正則表達式產生:

/m_6-23E5CD3A14BC47154F29E25578FC4