Как работать с регулярными выражениями

Чтобы начать наше знакомство с регулярными выражениями, давайте же познакомимся с ними поближе. Регулярные выражения являются шаблоном, каковой выполняет сравнение последовательности текста слева направо. Название "Регулярные выражения" используют довольно-таки не часто, чаще всего применяет regex либо regexp. В общем, регулярные выражения предназначены для изменения текста в строке, выполняет проверку некоторых форм, и так далее.

К примеру, у вас в разработке ведется некое приложение, и вам понадобилось выявить какие-то правила, по каковым юзер уже будет выбирать собственное наименование. Важным условием будет ограничение в количестве символах, а также чтобы имя состояло из букв, цифр, дефиса и нижнего подчеркивания. Для того, чтобы решить данную задачу, возможно использовать представленное ниже решение:

regex

Представленное условие будет принимать строки:

  • 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.

Who's online

There are currently 1 user and 1 guest online.