Регулярные выражения perl.Краткий справочник.

Сводная таблица метасимволов.

метасимволзначение
[abc]любой из символов a, b, или c
[^abc]все кроме символов a, b, или c.
[a-z]любой символ ASCII между a и z.
\d \Dцифра; не цифра.
\w \Wлюбой допустимый в слове символ;не допустимый в слове символ
\s \Sпробельный символ; не пробельный символ.
\bграница между \w символом и \W символом.
.любой символ (кроме новой строки).
(abc)фраза ‘abc’ как группа.
?предшествующие группа или символ повторяются 0 или 1 раз.
+предшествующие группа или символ повторяются 1 и более раз.
*предшествующие группа или символ повторяются 0 и более раз.
{x,y}предшествующие группа или символ могут повторятся от x до y раз.
{,y}предшествующие группа или символ могут повторятся не более y раз.
{x,}предшествующие группа или символ могут повторятся более x раз.
{x}предшествующие группа или символ повторяется x раз.

Жадность квантификаторовСинтаксис:(шаблон)+?
          
      (шаблон)*?
Метасимволы + и * являются жадными по умолчанию и пытаются найти максимально большое соответствие в строке, изменить их поведение позволяет ‘?’, который необходимо расположить сразу после квантификатора.Операторы сопоставленияСоответствие — m //
Синтаксис:          m/шаблон/
 Осуществляет поиск шаблона в тексте, возвращает true, если шаблон найден (при использовании разделителей // не обязателен).
Применимы следующие модификаторы: g, i, m, o, s, x
Замена – s///
Синтаксис:          s/шаблон1/шаблон2/
 Осуществляет поиск в тексте шаблона1 с заменой на шаблон2, возвращает true, если замена состоялась.
Применимы следующие модификаторы: e,g, i, m, o, s, x
Транслитерация – tr/// или y///
Синтаксис:          tr/шаблон1/шаблон2/
                              y/шаблон1/шаблон2/
 Осуществляет поиск в тексте символов из шаблона1 и заменяет на соответствующие в шаблоне2, возвращает общее количество произведенных замен (при повторении символов в шаблоне1 для замены используется первое совпадение например tr/abbc/xyz/ соответсвует tr/abc/xyz/.
Применимы следующие модификаторы: c, d, s
Разделители
В качестве разделителей могут выступать различные символы ‘не-слова’ такие как <>,(),[],{} и т.д. например:
                              s<шаблон1><шаблон2>
и
                              s#шаблон1#шаблон2#
оба эквивалентны
                              s/шаблон1/шаблон2/Операторы привязкиОператоры привязки =~
Синтаксис:          $refstring =~ m/шаблон/
Проверяет на наличие совпадений в переменной отличной от $_. Возвращает true, если совпадение найдено.
Операторы отрицания !~
Синтаксис:          $refstring !~ m/шаблон/
Проверяет на наличие совпадений в переменной отличной от $_. Возвращает true, если совпадение не найдено.
МодификаторыСоответствие и ЗаменаДанные модификаторы используются для изменения поведения операторов соответствия и замены.
Отмена сброса позиции — /c
Используется только вместе с модификатором глобального поиска, т.е. //gc. Не сбрасывает позицию курсора, в начало строки, если соответствия не было найдено.
Вычислить замену — /е
Определяет, что шаблон замены является выражением, которое предварительно необходимо рассчитать.
Глобальный поиск — /g
Производит поиск всех вхождений шаблона в строке.
Не учитывать регистр — /i
Поиск шаблона идет без учета регистра.
Много строчный режим — /m
Для каждой строки в тексте учитываются символ начала(^) и конца($), иначе они бы воспринимались как начало и конец всего текста.
Одноразовое вычисление шаблона — /o
Если шаблон поиска содержит переменные, а поиск производиться в цикле, то значение шаблона будет рассчитано только один раз.
Однострочный режим — /s
Производит поиск всех вхождений шаблона в строке.
Свободная форма — /x
Игнорирует пробелы (‘ ‘), кроме описанных метасимволом \s. Позволяет добавлять комментарии внутри шаблона.
ТранслитерацияДанные модификаторы используются для изменения поведения операторов транслитерации.
Дополнение — /с
Производит замену всех символов, которых нет в шаблоне1.
Удаление — /d
Удаляет все найденные символы из шаблона1, для которых неопределенно значение в шаблоне2.
Сквош — /s
В момент замены, удаляет повторяющиеся символы
Локальные модификаторыСинтаксис:
/РегистроЗависимыйТекст((?i)РегистроНеЗависимыйТекст)РегистроЗависимыйТекст/

/РегистроНеЗависимыйТекст((?-i)РегистроЗависимыйТекст)РегистроНеЗависимыйТекст/i

Изменяют поведение модификаторов для отдельных участков шаблона поиска

модификаторописаниеположительный эффектотрицательный эффект
/iНе учитывать регистр(?i)(?-i)
/sОднострочный режим(?s)(?-s)
/mМного строчный режим(?m)(?-m)
/xСвободная форма(?x)(?-x)

Группировка и альтернатива| Альтернатива
Синтаксис:          шаблон1|шаблон2
Разделяя шаблоны символом |, мы определяем, что поиск должен идти по одному или другому.
() Группировка и запоминание
Синтаксис:          (шаблон)
Применяя скобки мы группируем элементы в шаблоне, а так же определяем оператору поиска запоминать найденные значения в нумерованных переменных ($1, $2, $3 и т. д.)
(?:) Не запоминать группировку
Синтаксис:          (?:шаблон)
Данный синтаксис означает, что необходимо произвести группировку элементов в шаблоне без запоминания.Поиск с условием до/после(?=) Поиск с условием после
Синтаксис:          шаблон1(?=шаблон2)
Данная запись означает, что необходимо искать шаблон1, за которым следует шаблон2, не запоминая шаблон2.
(?!) Поиск с условием нет после
Синтаксис:          шаблон1(?!шаблон2)
Данная запись означает, что необходимо искать шаблон1, за которым не идет шаблон2, не запоминая шаблон2.
(?<=) Поиск с условием до
Синтаксис:          шаблон1(?<=шаблон2)
Данная запись означает, что необходимо искать шаблон1, перед которым идет шаблон2, не запоминая шаблон2шаблон2 должени быть фиксированной ширины.
(?<=) Поиск с условием нет до
Синтаксис:          шаблон1(?<!шаблон2)
Данная запись означает, что необходимо искать шаблон1, перед которым не идет шаблон2, не запоминая шаблон2шаблон2 должени быть фиксированной ширины.Переменные с результатом поиска

переменнаяописание
\число (число = 1, 2 …)Внутри шаблона поиска \число возвращает подстроку, определенную в группированном выражении, которая соответствует номеру по счету. Например: (one|two)\1, найдет oneone или twotwo.
$число (число = 1, 2 …)В результатах поиска $число возвращает подстроку, определенную в группированном выражении, которая была найдена соответсвующей посчету
$+Возвращает последнюю найденную подстроку, определенную в группированном выражении.
$&Возвращает всю строку, которая была определена поиском, включая группировки которые были помечены не для сохранения (?:)
$`Возвращает строку, которая была перед найденным $&
$’Возвращает строку, которая была после найденного $&

Другое(?#) Вставка комментария
Синтаксис:          (?#текст комментария)
Позволяет добавлять комментарии внутри регулярного выражения, аналог модификатора /x.

Данная заметка является переводом «Приложения A» книги «Beginning Perl «.