2016-08-11 3 views
-2

У меня есть следующий код: PerlRegex соответствия [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

Добро пожаловать на Stack Overflow. Что произойдет, если вы поместите регулярное выражение в заголовок в программу? Вам нужно будет отрегулировать часть, которая соответствует двум символам между слэшами, чтобы разрешить только одну; вам нужно добавить соответствующий квантификатор после второго класса символов. Но это почти все. –

+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 
Смежные вопросы