[*nix, Регулярные выражения] Галопом по основам Regex
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Регуля́рные выраже́ния (англ. 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
===========
Похожие новости:
- [Программирование, *nix, Локализация продуктов, Kotlin, Изучение языков] Интернационализация и локализация приложения на Kotlin/Native
- [Open source, *nix] FOSS News №61 – дайджест материалов о свободном и открытом ПО за 15-21 марта 2021 года
- [*nix] Archlinuxarm просто
- [Настройка Linux, *nix] Заметки о Unix: работа с GNU grep и обязательное применение опции -a (--text) (перевод)
- [Программирование, *nix, Учебный процесс в IT, Карьера в IT-индустрии] Полезные материалы для разработчика
- [*nix, Отладка, Разработка под Linux] Команды GDB, о которых вы возможно не знали
- [*nix, Разработка на Raspberry Pi, Умный дом] Установка Home Assistant + Supervisor в Ubuntu на HDD Raspberry Pi 4
- [*nix] Загрузка Linux с VHD на компьютере с BIOS
- [*nix, Разработка под Linux, Интернет вещей, DIY или Сделай сам] Подключаем дисплей SPI LCD ILI9341 к одноплатному компьютеру Banana Pi BPI-M64 или любому другому на ОС Armbian
- [Open source, *nix] FOSS News №60 – дайджест материалов о свободном и открытом ПО за 8-14 марта 2021 года
Теги для поиска: #_*nix, #_reguljarnye_vyrazhenija (Регулярные выражения), #_regex, #_*nix, #_reguljarnye_vyrazhenija (
Регулярные выражения
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 21:15
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Регуля́рные выраже́ния (англ. regular expressions) — формальный язык поиска и осуществления манипуляций с подстроками в тексте, основанный на использовании метасимволов (символов-джокеров, англ. wildcard characters). Для поиска используется строка-образец (англ. pattern, по-русски её часто называют «шаблоном», «маской»), состоящая из символов и метасимволов и задающая правило поиска. Для манипуляций с текстом дополнительно задаётся строка замены, которая также может содержать в себе специальные символы.
Регулярные выражения — Википедия Регулярные выражения нужны для поиска определённых строк с помощью специальных выражений. Вы можете манипулировать с текстом с помощью Regex в следующих приложениях:
Также 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 или неопределённое количество раз {2} — скобки с одним аргументом указывают сколько раз выражение до них должно встретиться {2,5} — скобки с двумя аргументами указывают на то, от скольки до скольки раз выражение до них должно встретиться (string) — скобки объединяют какое-то предложение в выражение. Обычно используется в связке с квантификаторами Давайте попробуем найти текст, в котором будут искаться все слова, содержащие ext или ex: ext?
В данном случае ? указывает на одну букву — t.
e(xt)?
В данном случае ? будет распространяться на выражение в скобках
X{1,3}L
В данном случае X умножается от 1 до 3
c*haracter
В данном случае c может повторяться от 0 до неограниченного количества раз
(word)+
В данном случае выражение word может повторяться от одного до неограниченного количества раз
(ch){3,}
В данном случае выражение ch может повторяться от 3-х до неограниченного количества раз
Выражение "или" | — символ, который обозначает оператор "или" [text] — выражение в квадратных скобках ставит или между каждым подвыражением Найти все слова, в которых есть буквы a,e,c,h,p: [aechp]
В данном случае будут выбираться все подфразы в квадратных скобках, то есть все буквы по отдельности
(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-Ноя 21:15
Часовой пояс: UTC + 5