Регулярные выражения 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 ". Нарыто на здесь.

It анекдот

Как вы относитесь к Биллу Гейтсу?

Как юзер, я его ненавижу за бесконечные баги в виндах.

Как человек, я им восхищаюсь, потому что при всех багах в виндах он сколотил огромное состояние.

Как программист, я его боготворю, потому что все свои косяки я могу списать на баги виндов.