2016-08-11 92 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