ѕоговорим?јлиса это умеет

ћерион Ќетворкс

4 минуты чтени€

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

ѕолезна ли ¬ам эта стать€?


Ёти статьи могут быть вам интересны: