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