В книге Дж. Фридла «Регулярные выражения» есть прекрасная табличка, которую хочу тут привести.
Регулярные выражения открывают широкие возможности для поиска и замены в любом тексте. Используя регулярные выражения можно гибко и просто обрабатывать текстовые документы. Одним из простейших применений регулярных выражений является поиск текста — во многих текстовых редакторах предусмотрена возможность поиска по шаблонам регулярных выражений В regexp существует несколько типов метасимволов выполняющих разные функции, давайте кратко их рассмотрим:
* данные возможности поддерживаются не всеми версиями egrep
Регулярные выражения открывают широкие возможности для поиска и замены в любом тексте. Используя регулярные выражения можно гибко и просто обрабатывать текстовые документы. Одним из простейших применений регулярных выражений является поиск текста — во многих текстовых редакторах предусмотрена возможность поиска по шаблонам регулярных выражений В 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, … |
обратная ссылка | текст, ранее совпавший с первой, второй и т.д. парами круглых скобок |