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

Регулярные выражения позволяют осуществить сложный поиск. Использо¬вать регулярные выражения позволяют операторы r// и s///.
Оператор r// выполняет поиск в строке с помощью регулярного выражения. Имеет следующий формат:
r/<Регулярное выражение>/ [<Модифик"атор>]
В параметре <модификатор> могут быть указаны следующие флаги:
?" i — поиск без учета регистра;
• m— поиск в строке, состоящей из нескольких строк, разделенных симво¬лом новой строки;
• s — однострочный режим. В этом режиме символ точки сопоставляется с символом новой строки;
• х — разрешает использовать в регулярном выражении пробелы и коммен¬тарии;
• g — поиск всех соответствий шаблону;
• с — не переустанавливать позицию поиска после неудачного сопоставле¬ния. Используется только в комбинации с флагом д.
Можно использовать несколько вариантов символов разделителей:
ш#<Регулярное выражение>#[<Модификатор>] ш(<Регулярное выражение>)[<Модификатор>] ш{<Регулярное выражение>}[<Модификатор>] ш[<Регулярное выражение>][<Модификатор>]
/<Регулярное выражение>/[<Модификатор>]
Обратите внимание на последний вариант. Если используется символ /, то операция поиска подразумевается по умолчанию.
Для поиска применяются два оператора связывания:
• если соответствие найдено, то оператор возвратит true;
• ! ~ — если соответствие найдено, то оператор возвратит false.
Если перед выражением указан массив, то в нем сохраняются соответствия подвыражений с шаблоном:
$str = "<BRXTD><OL>";
$pattern = qr/<(\w+)>/;
@Mass = $str =~ m/$pattern/i; for($i=0; $i<@Mass; $i++) { print "$Mass[$i] <BR>";
}
В данном примере выведется только первое соответствие с шаблоном, т. к. не указан флаг глобального поиска д. Классу \w соответствуют любые буквы и цифры, а знак + указывает, что искомый символ должен встретиться хотя бы один раз (возможно много раз). В массив попадают только те значения, кото¬рые заключены в круглые скобки. Таким образом, мы можем выбрать из строки названия всех тегов:
$st г = "<BR><TDXOL>";
$pattern = qr/<(\w+)>/;
@Mass = $str =~ m/$pattern/ig; for($i=0; $i<@Mass; $i++) { print H$Mass[$i] <BR>";
}
Вывод:
BR
TD
OL
В этих примерах мы использовали оператор qr//. С его помощью переменная $pattern будет содержать откомпилированное регулярное выражение. Опера¬тор имеет следующий формат:
qr/<Регулярное выражение>/[<Модификатор>]
В параметре <модификатор> могут быть указаны следующие флаги: i, m, s, х. Их значения такие же, как и у флагов оператора поиска r//.


Страница: 1 | 2 | 3 | 4 | 5


Web сайты на Perl и MySql