Регулярное выражение это шаблон, который выполняет сравнение последовательности символов слева направо. Название "Регулярное выражение" используют довольно редко, так как чаще всего применяют regex или regexp. Основное же предназначение - изменение символов (текста) в строке, а также выполнять проверку некоторых форм, но обо всем по порядку.
К примеру, у вас в разработке ведется некое приложение, и вам понадобилось выявить какие-то правила, по каковым юзер уже будет выбирать собственное наименование. Важным условием будет ограничение в количестве символах, а также чтобы имя состояло из букв, цифр, дефиса и нижнего подчеркивания. Для того, чтобы решить данную задачу, возможно использовать представленное ниже решение:
Представленное условие будет принимать строки:
- john_doe;
- jo-hn_doe;
- john12_as.
Но, если наименование юзера будет состоять из прописной буквы, например Jo, тогда оно никак не будет соответствовать данному условию.
ОСНОВНЫЕ СОВПАДЕНИЯ
Регулярные выражения являются шаблоном, который состоит из неких символов, с помощью какового разработчики выполняют поиск в тексте. К примеру, условие "The" будет означать букву "t", за каковой идет "h", затем "e".
- "the" => The fat cat sat onthemat.
МЕТАСИМВОЛЫ
Строительными блоками регулярных выражений являются метасимволы, которые являются независимыми, и обычно используются любыми способами. Некоторое количество из них могут иметь особое предназначение, поэтому они выделяются квадратными скобками. Ниже вы можете ознакомиться с метасимволами:
Метасимволы |
Описание |
. |
Любой единичный символ, исключая новую строку. |
[ ] |
Поиск набора символов, помещенных в скобки. |
[^ ] |
Negated character class. Matches any character that is not contained between the square brackets |
* |
0 или больше повторений предшествующего символа. |
+ |
1 или больше повторений предшествующего символа. |
? |
Делает предшествующий символ опциональным. |
{n,m} |
Возвращает как минимум "n", но не более "m" повторений предшествующего символа. |
(xyz) |
Находит группу символа в строго заданном порядке. |
| |
Разделяет допустимые варианты. |
\ |
Исключает следующий символ. Позволяет искать служебные символы [ ] ( ) { } . * + ? ^ $ \ | |
^ |
Находит начало введенной строки. |
$ |
Находит конец введенной строки. |
СОКРАЩЕНИЯ ДЛЯ ОБОЗНАЧЕНИЯ СИМВОЛОВ
В регулярных выражениях также существуют некоторые сокращения для символов, что в несколько раз повышает комфортность при работе. Ниже приведен список сокращений:
Сокращение |
Описание |
. |
Любой символ, кроме новой строки |
\w |
Соответствует буквенно-цифровым символам:[a-zA-Z0-9_] |
\W |
Соответствует не буквенно-цифровым символам:[^\w] |
\d |
Соответствует цифрам: [0-9] |
\D |
Соответсвует нецифровым знакам: [^\d] |
\s |
Соответствует знаку пробела: [\t\n\f\r\p{Z}] |
\S |
Соответствует символам без пробела: [^\s] |
LOOK AROUND ПОЗИЦИОННАЯ ПРОВЕРКА
Look Around представляет собой набор некоторых групп, которые предназначены для поиска в тексте, но также сами в него не входят. Позиционная проверка используется в случаях того, если в определенном условии существует шаблон, которых либо предшествует, либо же будет следующим.
Символ |
Описание |
?= |
Положительный Lookahead |
?! |
Отрицательный Lookahead |
?<= |
Положительный Lookbehind |
? |
Отрицательный Lookbehind |
ФЛАГИ
Флаги также часто называют модификаторами, так как они могут изменять выходные данные регулярного выражения. Флаги ниже являются неотъемлемой частью и могут использоваться в любом порядке или комбинации регулярных выражений.
Флаг |
Описание |
i |
Нечувствительность к регистру: делает выражение нечувствительным к регистру. |
g |
Глобальный поиск: поиск шаблона во всей строке ввода. |
m |
Многострочность: анкер метасимвола работает в каждой строке. |
ЖАДНЫЕ VS. ЛЕНИВЫЕ ВЫРАЖЕНИЯ
По умолчанию регулярные выражения выполняются благодаря "жадным" квантификаторам, им соответствует максимально длинная строка из всех возможных.
- "/(.*at)/" => The fat cat sat on the mat.
Чтобы получить "ленивое" выражение, нужно использовать ?. Так будет получена максимально короткая строка.
- "/(.*?at)/" => The fat cat sat on the mat.