Вход/Регистрация
Программирование. Принципы и практика использования C++ Исправленное издание
вернуться

Страуструп Бьерн

Шрифт:

Если хотите использовать в шаблоне один из специальных символов, вы должны сделать его управляющим, поставив перед ним обратную косую черту; например, символ

+
в шаблоне является оператором “один или несколько”, а символ
\+
— это знак “плюс”.

23.8.2. Классы символов

Самые распространенные сочетания символов в сжатом виде представлены как специальные символы.

Символы в верхнем регистре означают “не вариант специального символа в нижнем регистре”. В частности, символ \W означает “не буква”, а не “буква в верхнем регистре”.

Элементы третьего столбца (например,

[[:digit:]]
) представляют собой альтернативные синтаксические конструкции, использующие более длинные имена.

Как и библиотеки

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

23.8.3. Повторения

Повторяющиеся шаблоны задаются постфиксными операторами.

Например, выражение

Ax*

соответствует символу A, за котором не следует ни одного символа или следует несколько символов x:

A

Ax

Axx

Axxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Если мы требуем, чтобы символ

x
встречался хотя бы один раз, то следует использовать оператор
+
, а не
*
. Например, выражение

Ax+

соответствует символу A, за которым следует один или несколько символов x:

Ax

Axx

Axxxxxxxxxxxxxxxxxxxxxxxxxxxxx

но не

A

В общем случае необязательный символ (ни одного или несколько) указывается с помощью знака вопроса. Например, выражение

\d–?\d

соответствует двум цифрам с необязательным дефисом между ними:

1–2

12

но не

1––2

Для задания конкретного количества вхождений или конкретного диапазона вхождений используются фигурные скобки. Например, выражение

\w{2}–\d{4,5}

соответствует только строкам, содержащим две буквы и дефис, за которым следуют четыре или пять цифр:

Ab–1234

XX–54321

22–54321

но не

Ab–123

?b–1234

Да, цифры задаются символами \w.

23.8.4. Группировка

Для того чтобы указать, что некое регулярное выражение является частичным шаблоном (sub-pattern), его следует заключить в круглые скобки. Рассмотрим пример.

(\d*:)

Данное выражение определяет частичный шаблон, не содержащий ни одной или содержащий несколько цифр, за которыми следует двоеточие. Группу можно использовать как часть более сложного шаблона. Рассмотрим пример.

(\d*:)?(\d+)

Данное выражение задает необязательную и, возможно, пустую последовательность цифр, за которыми следуют двоеточие и последовательность из одной или нескольких цифр. Этот лаконичный и точный способ выражения шаблонов изобрели обычные люди!

23.8.5. Варианты

Символ “или” (|) задает альтернативу. Рассмотрим пример.

Subject: (FW:|Re:)?(.*)

  • Читать дальше
  • 1
  • ...
  • 370
  • 371
  • 372
  • 373
  • 374
  • 375
  • 376
  • 377
  • 378
  • 379
  • 380
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: