Ваша шпаргалка по основам Regex

—

от автора

Регуля́рные выраже́ния (англ. regular expressions) — формальный язык поиска и осуществления манипуляций с подстроками в тексте, основанный на использовании метасимволов (символов-джокеров, англ. wildcard characters). Для поиска используется строка-образец (англ. pattern, по-русски её часто называют «шаблоном», «маской»), состоящая из символов и метасимволов и задающая правило поиска. Для манипуляций с текстом дополнительно задаётся строка замены, которая также может содержать в себе специальные символы.

Регулярные выражения — Википедия

Регулярные выражения нужны для поиска определённых строк с помощью специальных выражений. Вы можете манипулировать с текстом с помощью Regex в следующих приложениях:

  • VSCode

  • Vim (NeoVim)

  • Emacs

  • Notepad++

  • Sublime

  • Jetbrains IDE

  • awk (консольная утилита)

  • sed (консольная утилита)

Также Regex часто используют в ЯП (Python, JS, C++, PHP, и т.д.)

Основы основ

Для начала нужно понять что в Regex есть специальные символы (например символ начала строки — ^), если вы хотите просто найти данный символ, то нужно ввести обратный слеш \ перед символом для того, чтобы символ не работал как команда.

Для того чтобы найти текст, нужно собственно просто ввести этот текст:

some text

Якори

^ — символ который обозначает начало строки

$ — символ который обозначает конец строки

Найдем строки которые начинаются с The Beginning:

^The Beginning

Найдем строки, которые заканчиваются на The End:

The End$

Найдем строки, которые начинаются и заканчиваются на The Beginning and The End:

^The Beginning and The End$

Найдем пустые строки:

^$

Квантификаторы

Обратите внимание на примеры, там всё сразу станет ясно

? — символ, который указывает на то, что выражение до него должно встретиться 0 или 1 раз

+ — символ, который указывает на то, что выражение до него должно встретиться один или больше раз

* — символ, который указывает на то, что выражение до него должно встретиться 0 или неопределённое количество раз

{2} — скобки с одним аргументом указывают сколько раз выражение до них должно встретиться

{2,5} — скобки с двумя аргументами указывают на то, от скольки до скольки раз выражение до них должно встретиться

(string) — скобки объединяют какое-то предложение в выражение. Обычно используется в связке с квантификаторами

Давайте попробуем найти текст, в котором будут искаться все слова, содержащие ext или ex:

ext?

В данном случае ? указывает на одну букву — t.

Давайте попробуем найти текст, в котором слова будут содержать ext или e:

e(xt)?

В данном случае ? будет распространяться на выражение в скобках

Найти все размеры одежды (XL, XXL, XXXL):

X{1,3}L

В данном случае X умножается от 1 до 3

Найти все слова, у которых есть неограниченное число символов c, после которых идёт haracter:

c*haracter

В данном случае c может повторяться от 0 до неограниченного количества раз

Найти выражение, в котором слово word повторяется от одного до неограниченного количества раз:

(word)+

В данном случае выражение word может повторяться от одного до неограниченного количества раз

Найти выражение, в котором выражение ch повторяется от 3 до неограниченного количества раз:

(ch){3,}

В данном случае выражение ch может повторяться от 3-х до неограниченного количества раз

Выражение "или"

| — символ, который обозначает оператор "или"

[text] — выражение в квадратных скобках ставит или между каждым подвыражением

Найти все слова, в которых есть буквы a,e,c,h,p:

[aechp]

В данном случае будут выбираться все подфразы в квадратных скобках, то есть все буквы по отдельности

Найти все выражения в которых есть ch или pa:

(ch)|(pa)

В данном случае будут находиться все выражения, в которых точно будет ch или pa

Escape-последовательности

\d — отмечает один символ, который является цифрой (digit)\

\D — отмечает символ, который не является цифрой

\w — отмечает любой символ (число или букву (или подчёркивание)) (word)

\s — отмечает любой пробельный символ (space character)

. — отмечает любой символ (один)

Выражения в квадратных скобках

Кроме того, что квадратные скобки служат оператором "или" между каждым символом, который в них заключён, они также могут служить и для некоторых перечислений:

[0-9] — один символ от 0 до 9

[a-z] — любой символ от a до z

[A-Z] — любой символ от A до Z

[^a-z] — любой символ кроме a — z

Флаги

Флаги — символы (набор символов), которые отвечают за то, каким именно образом будет происходить поиск.

Форма условия поиска в Regex выглядит вот так:

команда/условие для поиска/флаги

g — флаг, который будет отмечать все выражения, которые соответствуют условиям поиска (по умолчанию поиск возвращает только первое выражение, которое подходит по условию) (global)

i — флаг, который заставляет искать выражения вне зависимости от региста (case insensitive)

ссылка на оригинал статьи https://habr.com/ru/post/548368/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *