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