Введение
Регулярное выражение (regular expression, regexp, регэксп) - механизм, позволяющий задать шаблон для строки и осуществить поиск последовательности символом, соответствующих этому шаблону в заданном тексте.
Сутью механизма регулярных выражений является то, что они позволяют задать шаблон для нечеткого поиска по тексту. Например, если перед вами стоит задача найти в тексте определенное слово, то с этой задачей хорошо справляются и обычные функции работы со строками. Однако если вам нужно найти "то, не знаю что", о чем вы можете сказать только то,…
Спецсимволы (метасимволы)
Основой синтаксиса регулярных выражений является тот факт, что некоторые символы, встречающиеся в строке, рассматриваются не как обычные символы, а как имеющие специальное значение (т. н. метасимволы). Именно это решение позволяет работать всему механизму регулярных выражений:
\ - отменить/применить специальное значение
. - любой символ
[ - начало множества
] - конец множества
^ - начало текста или отрицание множества
$ - конец текста
( - начало последовательности
) - конец последовательности
| - ИЛИ
* - 0 или более
+ - 1 или более
?…
Множество "[]"
Квадратные скобки "[]" называются множеством. Они соответствуют любому символу, входящему в это множество. Эквивалентно перечислению всех символом множества через "|" (см. ниже).
Внутри множества используются следующие метасимволы:
Обратный слэш"\". Подробнее см. выше.
Минус "-'. Используется для задания диапазона символов от предыдущего символа до следующего за тире. Например, все цифры могут быть заданы как '0-9'. Если нет предыдущего символа (тире стоит сразу же после "[") или нет последующего символа (последующий символ "]"), то тире рассматривается как обычный символ.
Символ '^'.…
Остальные спецсимволы
Символ вертикальной черты '|' означает ИЛИ.
Символ точки '.' - любой символ (кроме перевода строки). Например, ".ord" найдет "ford", "lord", "2ord" и т. д.
Круглые скобки " ()" означают последовательность. Используются для применения квантификаторов не к одному символу, а к нескольким, а также для дальнейшего использования найденной последовательности.…
Жадные и нежадные
По умолчанию все повторители "жадные", т. е. соответствуют как можно более длинной последовательности. Например, "a.*a" для последовательности "a bb a cc a" найдет всю эту строку (".*" будет соответствовать " bb a cc ").
Для того, что сделать повторители "нежадными" (т. е. чтобы они соответствовали как можно меньшей последовательности) после них необходимо поставить метасимвол "? ". Например, "a.*?a" для последовательности "a bb a cc a" найдет "a bb a" (".*" будет соответствовать " bb ").…
Обратный слэш "\"
Одним из самых важных метасимволов является символ обратного слэша ("\"). Если в строке встречается этот символ, то следующий за ним символ рассматривается двояко:
если следующий символ в обычном режиме имеет какое-либо специальное значение, то он теряет это свое специальное значение и рассматривается как обычный символ. Это совершенно необходимо для того, чтобы иметь возможность вставлять в строку специальные символы, как обычные. Например метасимвол '.', в обычном режиме означает "любой единичный символ", а '\.' означает просто точку.…
Квантификаторы (повторители)
Можно просто указать необходимое количество символов непосредственно в строке, но это, естественно не выход. Тем более, что очень часто встречаются ситуации, когда точное количество символов неизвестно. Поэтому синтаксис регулярных выражений содержит набор метасимволов, предназначенных именно для решения подобных задач. Каждый из описанных ниже метасимволов определяет количественную характеристику символа, который находится непосредственно перед ним.
Фигурные скобки "{}". Определяют количественную характеристику символа.…
Дополнительная информация
Более подробную документацию по регулярным выражениям см здесь:…