Что такое Regex (регулярное выражение)?

Сокращенно от regular expression, regex - это строка текста, позволяющая создавать шаблоны, которые помогают сопоставлять, находить и управлять текстом. Perl - отличный пример языка программирования, в котором используются регулярные выражения. Однако это лишь одно из многих мест, где можно встретить регулярные выражения. Регулярные выражения также можно использовать из командной строки и в текстовых редакторах для поиска текста в файле.

При первой попытке понять регулярные выражения кажется, что это другой язык. Однако освоение регулярных выражений может сэкономить вам тысячи часов, если вы работаете с текстом или вам нужно анализировать большие объемы данных. Ниже приведен пример регулярного выражения с обозначением каждого из его компонентов. Это регулярное выражение также показано в примерах программирования на Perl, приведенных далее на этой странице.

Основы регулярных выражений (шпаргалка)

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

Символ Что это делает? Пример Совпадение
^ Совпадает с началом строки ^abc abc, abcdef.., abc123
$ Совпадает с концом строки abc$ my:abc, 123abc, theabc
. Совпадает с любым символом a.c abc, asg, a2c
| Оператор OR abc|xyz abc or xyz
(...) Захват всего, что совпало (a)b(c) Captures 'a' and 'c'
(?:...) Группа не захвата (a)b(?:c) Captures 'a' but only groups 'c'
[...] Совпадает со всем, что содержится в скобках [abc] a,b, or c
[^...] Сопоставляет все, что не содержится в скобках [^abc] xyz, 123, 1de
[a-z] Совпадает с любыми символами от 'a' до 'z' [b-z] bc, mind, xyz
{x} Точное 'x' количество раз для совпадения (abc){2} abcabc
{x,} Сопоставить 'x' количество раз или больше (abc){2,} abcabc, abcabcabc
{x,y} Искать от 'x' до 'y' раз. (a){2,4} aa, aaa, aaaaa
* Жадное совпадение, при котором совпадает все, что находится на месте * ab*c abc, abbcc, abcdc
+ Совпадает с символом перед + один или более раз a+c ac, aac, aaac,
? Совпадает с символом перед ? ноль или один раз. Также используется как не жадное совпадение ab?c ac, abc
\ Вывод символа после обратной косой черты или создание управляющей последовательности. a\sc a c

Эскейп-символы (последовательность экранирования)

Символы Escape чувствительны к регистру.

Символ Что он делает?
\ Любой символ, не упомянутый ниже, которому предшествует \, будет экранирован. Например, \. соответствует точке и не выполняет вышеупомянутую функцию. Символы, которые должны быть экранированы: () [] {} ^ $ . | * + ? \
\0 Нулевой символ.
\a В Perl \a - это звонок или сигнал тревоги, и в регулярных выражениях он не используется.
\A Соответствие началу многострочной строки.
\b Граница слова в большинстве или обратный пробел.
\B Граница без слова.
\d Соответствие любой десятичной цифре (0-9).
\D Соответствие любой нецифровой цифре.
\e Совпадение с экраном.
\f Соответствие подаче формы.
\l Зачеркивает первую букву в совпадении.
\L Зачеркнуть все совпадающие буквы.
\n Сопоставить новую строку.
\Q...\E Игнорирует любые специальные значения совпадающих букв.
\r Сопоставить возврат каретки.
\s Совпадает с символом пробела (пробел, \t, \r, \n).
\S Совпадает с любым небелым символом пробела.
\t Совпадает с символом табуляции.
\u Подчеркивает первую букву в совпадении.
\U Подчеркивает все совпадающие буквы.
\v Совпадение с вертикальной табуляцией.
\w Совпадает с любым одним символом слова ([a-zA-Z_0-9]).
\W Совпадает с одним несловарным символом.

Флаги регулярных выражений

За пределами регулярного выражения (в конце) флаги помогают при сопоставлении шаблонов.

Символы Что он делает?
i Игнорирует регистр (допускаются прописные и строчные буквы).
m Многострочное совпадение.
s Сопоставлять новые строки.
x Разрешает пробелы и комментарии.
J Допускается дублирование имен групп.
U Неблагородное совпадение.

Примеры регулярных выражений в языке программирования Perl

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

Приведенный выше пример заменяет любые «плохие данные» на «хорошие данные», используя соответствие без учета регистра. Таким образом, если переменная $data имела значение «Здесь плохие данные», то она превратится в «Здесь хорошие данные».

Этот пример заменяет любую строчную букву a на прописную A. Таким образом, если переменная $data была «example», то она превратится в «exAmple».

Приведенный выше пример заменяет любую строчную букву, от a до z, на звездочку. Таким образом, если $data было «Example», то оно превратится в «E******».

В этом примере используется символ $, который указывает регулярному выражению на соответствие тексту, стоящему перед ним в конце строки. Таким образом, если $data было «example», то оно превратится в «examples».

В приведенном выше примере мы заменяем точку на восклицательный знак. Поскольку точка является метасимволом, если вы ввели только точку без \ («escape»), она будет восприниматься как любой символ. В этом примере, если бы $data было «example.», оно превратилось бы в «example!», однако, если бы вы не ввели escape, оно заменило бы все символы и стало бы «!!!!!!!!».

Наконец, в этом примере каретка ( ^ ) указывает регулярному выражению на соответствие всему, что находится в начале строки. В этом примере любая строчная буква «e» в начале строки заменяется на заглавную «E». Таким образом, если $data было «example», то оно превратится в «Example».

Понравилась статья? Поделиться с друзьями:
Добавить комментарий