Программирование. Принципы и практика использования C++ Исправленное издание
Шрифт:
Это выражение распознает тему сообщения электронной почты с необязательными символами FW: или Re:, за которыми может не стоять ни одного символа или может стоять несколько символов. Рассмотрим пример.
Subject: FW: Hello, world!
Subject: Re:
Subject: Norwegian Blue
но не
SUBJECT: Re: Parrots
Subject FW: No subject!
Пустая альтернатива
(|def)
Однако мы можем указать несколько альтернатив сразу.
(bs|Bs|bS|BS)
23.8.6. Наборы символов и диапазоны
Специальные символы представляют собой обозначение наиболее распространенных классов символов: цифр (\d); букв, цифр и знака подчеркивания (\w) и др. (см. раздел 23.7.2). Однако часто бывает полезно определить свой собственный специальный символ. Сделать это очень легко. Рассмотрим пример.
В спецификации класса символов дефис (–) используется для указания диапазона, например, [1–3] (1, 2 или 3) и [w–z] (w, x, y или z). Пожалуйста, будьте аккуратны при использовании таких диапазонов: не все языки содержат одинаковые буквы, и порядки их следования в алфавитах разных языков могут отличаться. Если вам необходим диапазон, не являющийся частичным диапазоном букв и цифр, принятых в английском языке, то обратитесь к документации.
Следует подчеркнуть, что мы используем специальные символы, такие как \w (означающий “любой словообразующий символ”), в спецификации класса символов. Как же нам вставить обратную косую черту (\) в класс символов? Как обычно, превращаем ее в управляющий символ: \\.
В последнем регулярном выражении символ ^ стоит не на первом месте после квадратной скобки ([), значит, это простой символ, а не оператор отрицания. Регулярные выражения могут быть очень хитроумными.
Реализация библиотеки
Более того, чтобы поместить строковый литерал в объект класса
Использование регулярных выражений вынуждает вводить множество обозначений. Перечислим стандартные классы символов.
Реализация библиотеки
23.8.7. Ошибки в регулярных выражениях
Что произойдет, если мы зададим неправильное регулярное выражение? Рассмотрим пример.
Когда мы присваиваем шаблон объекту класса
Рассмотрим небольшую программу, позволяющую исследовать механизм сравнения регулярных выражений.