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
Fail2ban — это программное обеспечение, которое защищает ваш сервер от атак. ПО отслеживает журналы сервера и выявляет любую под
img
Виртуализация серверов — популярная тема в мире ИТ, особенно на уровне предприятий. Она позволяет разным операционным системам з
img
  Введение Системные вызовы выступают в роли посредников между приложениями и ядром. Они создают уровень абстракции, который защ
img
  Введение SWAP (SWAP-память или SWAP-пространство) – это раздел жесткого диска или SSD компьютера, где операционная система (ОС
img
  Введение Абсолютные и относительные пути определяют расположение файла или каталога в файловой системе. Это набор инструкций д
img
  Введение Файлы конфигурации Linux определяют поведение и функциональное наполнение операционной системы. Файлы конфигурации –
Комментарии
ОСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59