Чтобы начать наше знакомство с регулярными выражениями, давайте же познакомимся с ними поближе. Регулярные выражения являются шаблоном, каковой выполняет сравнение последовательности текста слева направо. Название "Регулярные выражения" используют довольно-таки не часто, чаще всего применяет regex либо regexp. В общем, регулярные выражения предназначены для изменения текста в строке, выполняет проверку некоторых форм, и так далее.
К примеру, у вас в разработке ведется некое приложение, и вам понадобилось выявить какие-то правила, по каковым юзер уже будет выбирать собственное наименование. Важным условием будет ограничение в количестве символах, а также чтобы имя состояло из букв, цифр, дефиса и нижнего подчеркивания. Для того, чтобы решить данную задачу, возможно использовать представленное ниже решение:
Представленное условие будет принимать строки:
Но, если наименование юзера будет состоять из прописной буквы, например Jo, тогда оно никак не будет соответствовать данному условию.
Регулярные выражения являются шаблоном, который состоит из неких символов, с помощью какового разработчики выполняют поиск в тексте. К примеру, условие "The" будет означать букву "t", за каковой идет "h", затем "e".
Строительными блоками регулярных выражений являются метасимволы, которые являются независимыми, и обычно используются любыми способами. Некоторое количество из них могут иметь особое предназначение, поэтому они выделяются квадратными скобками. Ниже вы можете ознакомиться с метасимволами:
| 
 Метасимволы  | 
 Описание  | 
| 
 .  | 
 Любой единичный символ, исключая новую строку.  | 
| 
 [ ]  | 
 Поиск набора символов, помещенных в скобки.  | 
| 
 [^ ]  | 
 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 представляет собой набор некоторых групп, которые предназначены для поиска в тексте, но также сами в него не входят. Позиционная проверка используется в случаях того, если в определенном условии существует шаблон, которых либо предшествует, либо же будет следующим.
| 
 Символ  | 
 Описание  | 
| 
 ?=  | 
 Положительный Lookahead  | 
| 
 ?!  | 
 Отрицательный Lookahead  | 
| 
 ?<=  | 
 Положительный Lookbehind  | 
| 
 ?  | 
 Отрицательный Lookbehind  | 
Флаги также часто называют модификаторами, так как они могут изменять выходные данные регулярного выражения. Флаги ниже являются неотъемлемой частью и могут использоваться в любом порядке или комбинации регулярных выражений.
| 
 Флаг  | 
 Описание  | 
| 
 i  | 
 Нечувствительность к регистру: делает выражение нечувствительным к регистру.  | 
| 
 g  | 
 Глобальный поиск: поиск шаблона во всей строке ввода.  | 
| 
 m  | 
 Многострочность: анкер метасимвола работает в каждой строке.  | 
По умолчанию регулярные выражения выполняются благодаря "жадным" квантификаторам, им соответствует максимально длинная строка из всех возможных.
Чтобы получить "ленивое" выражение, нужно использовать ?. Так будет получена максимально короткая строка.