Как стать автором
Обновить

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

Время на прочтение3 мин
Количество просмотров15K
В книге Дж. Фридла «Регулярные выражения» есть прекрасная табличка, которую хочу тут привести.
Регулярные выражения открывают широкие возможности для поиска и замены в любом тексте. Используя регулярные выражения можно гибко и просто обрабатывать текстовые документы. Одним из простейших применений регулярных выражений является поиск текста — во многих текстовых редакторах предусмотрена возможность поиска по шаблонам регулярных выражений В 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
Теги:
Хабы:
Всего голосов 43: ↑29 и ↓14+15
Комментарии25

Публикации

Истории

Ближайшие события

27 августа – 7 октября
Премия digital-кейсов «Проксима»
МоскваОнлайн
11 сентября
Митап по BigData от Честного ЗНАКа
Санкт-ПетербургОнлайн
14 сентября
Конференция Practical ML Conf
МоскваОнлайн
19 сентября
CDI Conf 2024
Москва
20 – 22 сентября
BCI Hack Moscow
Москва
24 сентября
Конференция Fin.Bot 2024
МоскваОнлайн
25 сентября
Конференция Yandex Scale 2024
МоскваОнлайн
28 – 29 сентября
Конференция E-CODE
МоскваОнлайн
28 сентября – 5 октября
О! Хакатон
Онлайн
30 сентября – 1 октября
Конференция фронтенд-разработчиков FrontendConf 2024
МоскваОнлайн