Чтобы начать наше знакомство с регулярными выражениями, давайте же познакомимся с ними поближе. Регулярные выражения являются шаблоном, каковой выполняет сравнение последовательности текста слева направо. Название "Регулярные выражения" используют довольно-таки не часто, чаще всего применяет 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.