Русский
Русский
English
Статистика
Реклама

Галопом по основам 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


Найти все выражения, в которых есть английские буквы в нижнем регистре или цифры:


[a-z\d]

В данном случае мы будем искать все буквы в нижнем регистре, а также цифры (цифры ищутся с помощью Escape-последовательности)

Флаги


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


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


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

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


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


В заключение


Теперь вы знаете базовые знания по Regex и можете использовать их в языках программирования, консольных утилитах или в программируемых редакторах (привет, Vim). Если вам интересен данный материал, а также интересны темы веб-разработки и администрирования Unix-подобных систем, то вы можете подписаться на мой телеграм-канал, там много всякого разного и полезного.

Источник: habr.com
К списку статей
Опубликовано: 22.03.2021 18:15:22
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

*nix

Регулярные выражения

Regex

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru