
Регуля́рные выраже́ния (англ. 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/
Добавить комментарий