Регулярные выражения в Perl

Perl включает в себя мощную поддержку регулярных выражений — особых конструкций, предназначенных для эффективной обработки текстовых данных.
Регулярные выражения, в частности, используются для поиска и замены данных в строках. Концепция регулярных выражений основана на сопоставлении строки с образцом (или, иначе, шаблоном), заключенным в наклонные скобки, образованные символами косой черты (/), при помощи операторов =~ (проверка соответствия шаблону) и !~ (проверка несоответствия шаблону).
Нижеследующий оператор использует регулярное выражение для поиска подстроки в строке:
if($string =~ /substring/)
{
print "Строка '$string' содержит слово substring";
}
Оператор, рассматриваемый ниже, заменит все вхождения подстроки стандарты на веб-стандарты в строке $string:
$string =~ s/стандарты/веб-стандарты/g;
Модификатор s указывает на то, что требуется произвести замену; а суффикс g говорит о том, что следует произвести глобальную замену, т. е. замену всех вхождений заданного шаблона в строку. Если бы не было суффикса g, приведенный выше оператор осуществлял бы замену только первого вхождения заданной подстроки в строку.
Нижеследующий оператор осуществляет замену по диапазону:
$string =~ tr/A-Z/a-z/;
Как вы, должно быть, уже догадались, этот оператор приводит к замене всех заглавных букв в строке на строчные.
В шаблонах, используемых в регулярных выражениях, можно использовать разнообразные спецсимволы, расширяющие функциональность регулярных выражений. Рассмотрим пример регулярного выражения, проверяющего правильность адреса электронной почты:
if($email !~ /^[^ <>+\|\'\\\/\0\@]{1,}\@[^ <>+\|\'\\\/\0\@]{1,}\.
?[a-z]{2,}$/)
{
print "Ошибка: введен некорректный адрес e-mail"
}
Если адрес электронной почты не соответствует образцу, содержащемуся в наклонных скобках, выводится сообщение об ошибке. Прежде, чем читать далее, попробуйте, основываясь на информации из таблицы 4.2, самостоятельно разобрать этот шаблон.
Разберем его вместе. Образец можно прочесть следующим образом:
? начало строки (символ ^ в начале шаблона);
? один или более любых символов, но только не из следующего множества: пробел, <, >, \| (вертикальная черта) \' (одиночная кавычка), \\ (обратный слэш), \/ (прямой слэш), \0 (символ с кодом 0), \@ («собака»);
? «собака» (\@);
? один или более любых символов, но только не из следующего множества: пробел, <, >, \| (вертикальная черта) \' (одиночная кавычка), \\ (обратный слэш), \/ (прямой слэш), \0 (символ с кодом 0), \@ («собака»);
? точка (\.);
? две или более латинских буквы ([a-z]{2,});
? конец строки (символ $ в конце шаблона).
Регулярные выражения могут показаться читателю довольно сложной темой — это нормально. Рекомендую потренироваться в составлении собственных регулярных выражений. Мы же, в свою очередь, еще не раз будем возвращаться к анализу разнообразных регулярных выражений в последующих практических примерах.


© 2008-2018 ОптимизацияВебСайтов.ру


Любое использование текстового и графического контента сайта без активной ссылки на источник не доскается.