У меня есть файл с представлением, как этотИспользование Perl, чтобы проверить, если строка имеет только английские символы
%TRYYVJT128F93506D3<SEP>SOYKCDV12AB0185D99<SEP>Rainie Yang<SEP>Ai Wo Qing shut up (OT: Shotgun(Aka Shot Gun))
%TRYYVHU128F933CCB3<SEP>SOCCHZY12AB0185CE6<SEP>Tepr<SEP>Achète-moi
Я вскрышное все, кроме названия песни, используя это регулярное выражение.
$line =~ s/.*>|([([\/\_\-:"``+=*].*)|(feat.*)|[?¿!¡\.;&\[email protected]%#\\|]//g;
Я хочу, чтобы убедиться, что только строки, напечатанные являются те, которые содержат только латинские символы, поэтому в данном случае это было бы первое название Ai Wo Quing shut up
песни, а не следующий из-за è
.
Я попробовал этот
if ($line =~ m/[^a-zA-z0-9_]*$/) {
print $line;
}
else {
print "Non-english\n";
я думал, что это будет соответствовать только английские символы, но он всегда печатает Non-english
. Я чувствую, что это я ржавый с регулярным выражением, но я не могу найти ответ.
Обратите внимание на свой класс символов: 'a-zA-z'.Они чувствительны к регистру, а 'A-z' покрывает LOT больше символов, чем' A-Z'. –
Ваше регулярное выражение - у вас есть '^' в неправильном месте. Он должен находиться за пределами скобок. – Sobrique
Приносим извинения, что это [a-zA-Z0-9_ ']. Перемещение^на внешнюю сторону скобок зафиксировало это. Спасибо Sobrique! – thechucklingatom