img

Как работать с регулярными выражениями

Чтобы начать наше знакомство с регулярными выражениями, давайте взглянем на них поближе. Регулярные выражения являются шаблоном, который выполняет сравнение последовательности текста слева направо. Выражние "регулярные выражения" используют не очень часто, чаще всего применяют "regex" либо "regexp". В общем и целом, регулярные выражения предназначены для изменения текста в строке, а также они выполняют проверку некоторых форм, и т.д.

regex

К примеру, у вас в разработке ведется некое приложение, и вам понадобилось выявить какие-то правила, по которым юзер уже будет выбирать собственное наименование. Важным условием будет ограничение в количестве символов и написании самого имени, которое должно состоять из букв, цифр, дефиса и нижнего подчеркивания. Для того, чтобы решить данную задачу, можно воспользоваться представленным ниже решением:

  • john_doe;
  • jo-hn_doe;
  • john12_as.

Но если наименование юзера будет состоять из прописной буквы, например Jo, то оно никак не будет соответствовать данному условию.


Основные совпадения

Регулярные выражения являются шаблоном, который состоит из неких символов, с помощью которого разработчики выполняют поиск в тексте. К примеру, условие "The" будет означать букву "t", за которой идет "h", затем - "e".

  • "the" => The fat cat sat onthemat.

Метасимволы

Строительными блоками регулярных выражений являются метасимволы, которые являются независимыми, и обычно используются любыми способами. Некоторое количество из них могут иметь особое предназначение, поэтому они выделяются квадратными скобками. Ниже вы можете ознакомиться с метасимволами.

Метасимволы

Описание

.

Любой единичный символ, исключая новую строку.

[ ]

Поиск набора символов, помещенных в скобки.

[^ ]

Отрицательный класс символов. Соответствует любому символу, не заключенному в квадратные скобки.

*

0 или больше повторений предшествующего символа.

+

1 или больше повторений предшествующего символа.

?

Делает предшествующий символ опциональным.

{n,m}

Возвращает как минимум "n", но не более "m" повторений предшествующего символа.

(xyz)

Находит группу символа в строго заданном порядке.

|

Разделяет допустимые варианты.

Исключает следующий символ. Позволяет искать служебные символы [ ] ( ) { } . * + ? ^ $ |

^

Находит начало введенной строки.

$

Находит конец введенной строки.


Сокращения для обозначения символов

В регулярных выражениях также существуют некоторые сокращения для символов, что в несколько раз повышает комфортность при работе. Ниже приведен список сокращений:

Сокращение

Описание

.

Любой символ, кроме новой строки

w

Соответствует буквенно-цифровым символам: [a-zA-Z0-9_]

W

Соответствует не буквенно-цифровым символам: [^w]

d

Соответствует цифрам: [0-9]

D

Соответствует нецифровым знакам: [^d]

s

Соответствует знаку пробела: [ f 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.
Ссылка
скопирована
Системное администрирование
Скидка 10%
Администратор Linux
Стань Linux администратором и сделай весомый шаг в сторону карьеры в DevOps. Самые важные знания от сертифицированного и практикующего тренера с 20 летним стажем
Получи бесплатный
вводный урок!
Пожалуйста, укажите корректный e-mail
отправили вводный урок на твой e-mail!
Получи все материалы в telegram и ускорь обучение!
img
Еще по теме:
img
На базе нашего опыта и статей мы сделалем еще один полезный документ: руководство администратора по Linux/Unix системам. В докум
img
Удаленный доступ к системам давно стал необходимостью, и сейчас с трудом можно представить, что было бы, если бы мы не могли упр
img
Все мы любим компьютеры. Они могут делать столько удивительных вещей. За пару десятилетий компьютеры произвели самую настоящую р
img
Архитектуры х64 и х86 являются одними из наиболее широко используемых типов архитектур системы команд (АСК или ISA – Instr
img
Gzip – один из самых популярных алгоритмов сжатия, который позволяет сократить размер файла, но при этом сохранить исходный файл
img
Интернет может быть опасным. Спросите любого хорошего IT-специалиста, и он вам обязательно расскажет о важности обеспечения безо
Комментарии
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59