Что такое регулярные выражения
Регулярным выражением (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 | Разрешает метасимволу '.' включать в своё определение символ перевода строки. |