Что такое регулярные выражения

Регулярным выражением (regular expression) называется механизм, с помощью которого в заданном тексте по шаблону осуществляется поиск строки (части текста или символов). После поиска эти данные можно сохранять в виде массива, сделать замену в тексте по шаблону или разбить строки по шаблону.

Родом регулярки из Perl и Unix. Есть два способа обработки регулярных выражений: perl-совместимые и posix-совместимые. Но используют в основном perl-совместимые.

Синтаксис. Регулярное выражение представляет собой шаблон строки. Этот шаблон всегда начинается с разделителя за которым следует РВ и заканчивается разделителем, после которого могут стоят не обязательные модификаторы. Разделителем с которого начинается и которым заканчивается регулярка является слэш ' / '.

Некоторые символы, встречающиеся в строке шаблона, имеют специальное значение, эти символы называются метасимволами. Каждый из них имеет определённое значение. Самым важным можно считать обратный слэш ' \ '. Если этот символ встречается в строке шаблона, то парсер двояко рассматривает символ, идущий за ним. Например точка ' . ' в обычном режиме имеет значение "единичный символ" , а после обратного слэша '\.' означает простую точку, символ 's' означает букву, а '\s' означает пробел или табуляцию.

Таблица значений метасимволов

\ Обратный слэш придаёт следующему за ним символу особое значение
\d Цифра от 0 до 9
\D Не цифра
\s Пробел или табуляция
\S Любой символ, только не пробели или табуляция
\w Любая буква, цифра или знак подчёркивания ' _ '
\W Любой символ, кроме определённых метасимволом \w
\n Перевод строки
\r Возврат каретки
\t Табуляция
- Тире используют для задания набора символов из одного промежутка, например 'a-z' или 'a-я'. Работает в секции описания подмножества
^ Если этот символ стоит первым с секции подмножества, он рассматривается как символ отрицания.
^ Если стоит вне секции подмножества символов, указывает парсеру на то, что искомый текст должен находиться в начале строки
$ Указывает парсеру на то, что искомый текст должен находиться в конец строки
. Символ точка говорит о том, что на этом месте может находится любой символ, исключая символ перевода строки
* Указывает на то, что символ повторяется ноль или более раз
+ Символ должен присутствовать хотя бы 1 раз и более
? Символ присутствует или нет, но не должен повторяться более одного раза.
{ } Определяют количественную характеристику символа

В синтаксисе регулярных выражений имеется средство для определения собственных подмножеств символов. Этими средствами являются квадратные скобки '[ ]'. Эти квадратные скобки, внутри регулярного выражения, считаются одним символов, который может принимать перечисленные внутри скобок значения.

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

/\D{4}/ - найдёт в строке любые 4 символа, только не цифры.
/\d{3,4}/ - найдёт в строке 3 или 4 цифры.
/\d\d\d/ - любое трёхзначное число.
/\s[a - z] {8}/ - пробел и 8 английских букв.
/\d[02468] / - любая цифра и чётная цифра.
/[^\d]/ - то же самое что и /\D/.
/.sy/ - найдёт в тексте 'ysy' и 'asy' и '5sy' и т.д. То есть точка подразумевает любой символ.
/.+y/ - найдёт весь текст до последнего вхождения символа y.
/.+?y/ - найдёт весь текст до первого вхождения символа y включительно.
/^.{3}$/ - любая строка содержащая 3 символа.
/z(ie)*/ - символ z, за которым стоит ноль и более экземпляров 'ie' то есть zieieieie.
/.+/ - найдёт только первую строку в тексте.
/.+/s - найдёт весть текст.

Применение символов '^' и '$'

Дан текст:
67 sdf dff esa
Sfd ddd 43 fdd
Add dff dsf 99

И даны три вида регулярного выражения:
/\d\d/
/^\d\d/
/\d\d$/
Первый вариант найдёт в тексте 67 43 99, второй вариант найдёт 67, последний вариант найдёт 99.

Применение фигурных скобок '{ }'

{4,6} - символ повторяется минимум 4, максимум 6 раз.
{,4} - минимального количества повторений нет (символ может отсутствовать), но если присутствует, то повторяется максимум 4 раз. {2,} - символ повторяется минимум 2 и более. {3} - символ повторяется строго 4 раза.

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

i большие и маленькие буквы не различаются
mТекст по которому ведётся поиск должен рассматривается из нескольких строк. По умолчанию механизм регулярок рассматривает текст как одну строку.
s Разрешает метасимволу '.' включать в своё определение символ перевода строки.
Реклама
профессиональный украинский хостинг значки рабочего стола http://www.labaz.ua выставки мебели Флеш игры бильярд флеш