Pull to refresh

Регулярные выражения — символьные классы, конструкция выбора, метапоследовательности

Reading time3 min
Views15K
В книге Дж. Фридла «Регулярные выражения» есть прекрасная табличка, которую хочу тут привести.
Регулярные выражения открывают широкие возможности для поиска и замены в любом тексте. Используя регулярные выражения можно гибко и просто обрабатывать текстовые документы. Одним из простейших применений регулярных выражений является поиск текста — во многих текстовых редакторах предусмотрена возможность поиска по шаблонам регулярных выражений В regexp существует несколько типов метасимволов выполняющих разные функции, давайте кратко их рассмотрим:
  • ^ и $ — «привязывают» совпадения остальной части регулярного выражения к началу и концу строки соответственно. Например ^cat совпадет со строками «cat» и «caterpillar», и dog$ со строками «bulldog» и «hotdog».
  • […] — символьные классы, позволяют перечислить символы, которые могут находиться в данной позиции текста. Например gr[ea]y совпадет со строками «grey» и «gray».
  • [^…] — исключающие символьные классы, позволяют перечислить символы, которые не могут находиться в данной позиции текста. Например g[^ae]rdy не совпадет со строками «gardy» и «gerdy», но совпадет со строками «gurdy», «g3rdy» и «girdy».
  • (…|…) — конструкция выбора, выбор из нескольких вариантов. Необходимо отметить, что каждая из частей конструкции выбора являтся полноценным регулярным выражением. Например Jeff(re|er)y совпадает со строками «Jeffrey» и «Jeffery».
  • \< и \> — метапоследовательности представляют собой аналог ^ и $ но на уровне слов. Например \<cat\> совпадает с отдельным словом cat.
Необходимо заметить что правила, определяющие состав поддерживаемых метасимволов (и их интерпертацию) внутри символьных и исключающих символьных классов и за их пределами полностью отличаются.
Метасимволы в регулярных выражениях
Cимвол Название Интерпретация
Элементы, обозначающие отдельный символ
. точка один любой символ
[…] символьный класс любой из перечисленных символов
[^…] инвертированный символьный класс любой символ, не перечисленный в классе
\символ экранирование если перед символом стоит экранирующий префикс «\», то символ интерпретируется как соответствующий литерал
Квантификаторы
? вопросительный знак допускается один экземпляр
(ни один не требуется)
* звездочка допускается любое количество экземпляров
(ни один не требуется)
+ плюс требуется один экземпляр,
допускается любое количество экземпляров
{min, max} интервальный квантификатор * требуется «min» экземпляров, допускается «max» результатов
Позиционные метасимволы
^ крышка, циркумфлекс позиция в начале строки
$ доллар позиция в конце строки
\< граница слова* позиция в начале слова
\> граница слова* позиция в конце слова
Прочие метасимволы
| конструкция выбора любое из перечисленных выражений
(…) круглые скобки ограничение для конструкции выбора, группировка для применения квантификаторов и сохранение текста для обратных ссылок
\1, \2, … обратная ссылка текст, ранее совпавший с первой, второй и т.д. парами круглых скобок
* данные возможности поддерживаются не всеми версиями egrep
Tags:
Hubs:
Total votes 43: ↑29 and ↓14+15
Comments25

Articles