moiseenko.net feedback
 

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

Оператор m// (поиск)

EXPR =~ m/PATTERN/cgimosx
EXPR =~ /PATTERN/cgimosx
EXPR =~ m?PATTERN?cgimosx

Модификаторы

Модификатор Значение
/i Игнорировать различия в регистре
/m Разрешить ^ и $ устанавливать соответствие рядом со встроенным \n
/s Разрешить . устанавливать соответствие переводу строки и игнорировать устаревшую переменную $*
/x Игнорировать (почти все) пробельные символы и разрешить в шаблоне комментарии
/o Компилировать шаблон только один раз
/g Глобальный поиск всех соответствий
/cg Разрешить продолжение поиска после неудачи поиска /g

Оператор s/// (подстановка)

LVALUE =~ s/PATTERN/REPLACEMENT/egimosx
s/PATTERN/REPLACEMENT/egimosx

Строка REPLACEMENT - воспринимается perl'ом как строка в двойных кавычках - с вытекающей отсюда интерполяцией переменных, включая $1, $2 и так далее.

Модификаторы

Модификатор Значение
/i Игнорировать различие в регистре при поиске
/m Разрешить ^ и $ устанавливать соответствие рядом со встроенным \n
/s Разрешить . устанавливать соответствие переводу строки и игнорировать устаревшую переменную $*
/x Игнорировать (почти все) пробельные символы и разрешить в шаблоне комментарии
/o Компилировать шаблон только один раз
/g Глобальный поиск всех соответствий
/e Вычислять правую часть как выражение (рассматривает правую часть - как часть кода perl, а не интерполируемую строку)

Оператор tr/// (транслитерация)

LVALUE =~ tr/SEARCHLIST/REPLACEMENTLIST/cds
tr/SEARCHLIST/REPLACEMENTLIST/cds

Модификаторы

Модификатор Значение
/c Дополнение к SEARCHLIST (отрицание - реальный список поиска состоит из символов, отсутствующих в SEARCHLIST)
/d Удалить найденные, но не замененные символы (для тех, у кого нет замены в REPLACELIST)
/s Подавить повторяющиеся замененные символы

Замкнутые модификаторы шаблонов

Модификаторы /i, /m, /s, /x можно замкнуть, ограничив их действие только частью шаблона, а не всем шаблоном целиком. Для этого их необходимо разместить между символами ? и : кластера.

Например, /ABC(?i:def)XYZ/, может соответствовать ABCdefXYZ или ABCDeFXYZ, но не abcdefxyz

Общие метасимволы

Символ Значение
\ Сделать обычным следующий не буквенно-цифровой метасимвол и сделать метасимволом (может быть) следующий буквенно-цифровой символ
| Чередование (соответствие одному или другому - ИЛИ)
( ) Группировка
[ ] Класс символов (соответствие одному символу из набора)
^ Начало строки
. Соответствие одному символу (обычно, кроме символа перевода строки)
$ Конец строки

Квантификаторы

Квантификатор Значение
* 0 или более совпадений (жадный - то есть максимальное количество совпадений)
+ 1 или более совпадений (жадный)
? 1 или 0 совпадений
{COUNT} ровно COUNT совпадений
{MIN,MAX} от MIN до MAX совпадений включительно
{MIN,} от MIN до бесконечного числа совпадений (жадный)
Ленивые формы
*? 0 или более совпадений (ленивый - то есть минимальное количество совпадений)
+? 1 или более совпадений (ленивый)
?? 0 или 1 совпадение (ленивый)
{MIN,MAX}? не меньше MIN и не больше MAX совпадений (ленивый)
{MIN,}? не меньше MIN совпадений (ленивый)

Расширенные последовательности

Расширение Значение
(?#…) Отбросить комментарий
(?:…) Скобки только для кластера, без захвата
(?imsx-imsx) Отключить модификаторы шаблона
(?imsx-imsx: ) Скобки только для кластера плюс модификаторы
(?=…) Истинно, если выполняется утверждение после данной точки
(?!…) Истинно, если не выполняется утверждение после данной точки
(?<=...) Истинно, если выполняется утверждение перед данной точкой
(?<!…) Истинно, если не выполняется утверждение перед данной точкой
(?>…) Совпадение с подшаблоном без ссылки на найденный текст
(?{…}) Выполнить встроенный код perl
(??{…}) Поиск регулярного выражения из встроенного кода perl
(?(...)...|...) Поиск по шаблону if-then-else
(?(...)...) Поиск по шаблону if-then
 
perl/regexp.txt · Последние изменения: 2010/04/28 21:40 (внешнее изменение)
 
За исключением случаев, когда указано иное, содержимое этой вики предоставляется на условиях следующей лицензии:CC Attribution-Noncommercial-No Derivative Works 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki