Образец
Тип Образец предназначен для описания собственно самих регулярных выражений. Экземпляр этого типа можно создать с помощью литерала или конструктора. Например:
// Создание регулярного выражения с помощью литерала
пер РегВыр1 = '(\ц{2}-){2}'
// Создание регулярного выражения с помощью конструктора
пер РегВыр2 = новый Образец("(\\ц{2}-){2}")
При использовании литерала строка, задающая конкретный образец, заключается в одинарные кавычки и содержит специальные конструкции, приведенные ниже.
Экранирование в литерале выполняется с помощью символа «\» (обратный слеш). Экранировать необходимо только сам обратный слеш («\») и одинарную кавычку «'».
При использовании конструктора образец создается из строки, содержащей регулярное выражение и заключенной в двойные кавычки. Чтобы записать в строку, из которой создается регулярное выражение, обратный слеш «\», его необходимо экранировать с помощью еще одного символа «\».
пер РегВыр = новый Образец("(\\ц{2}-){2}")
пер СтрокаОбразца = РегВыр.ВСтроку() //СтрокаОбразца = (\ц{2}-){2}
В обоих случаях при создании образца в случае некорректности регулярного выражения выбрасывается исключение .
Для создания регулярного выражения могут использоваться следующие конструкции:
- Символы:
- х – символ х;
- \ – символ обратной косой черты;
- \юhhhhh – код символа в Юникод с десятеричным значением hhhhh;
- \т – символ табуляции;
- \н – символ перевода строки;
- \в – символ возврата каретки.
- Классы символов:
- [абв] – «а», «б» или «в». Содержимое внутри квадратных скобок не должно быть пустым ([] – запрещено);
- [^абв] – любой символ, кроме «а», «б» или «в» (отрицание). Содержимое внутри квадратных скобок не должно быть пустым ([^] – запрещено);
- [а-яА-я] – символы в диапазоне от «а» до «я» или от «А» до «Я» (диапазоны). Содержимое внутри квадратных скобок не должно быть пустым ([] – запрещено).
- Заранее обозначенные символьные классы:
- . – любой символ, кроме терминаторов строк;
- \ц – какая-либо цифра: [0-9];
- \Ц – не цифра;
- \п – пробельный символ;
- \П – не пробельный символ;
- \с – символ, допустимый в словах;
- \С – символы, не участвующие в словах.
- Символы соответствия границ:
- ^ – начало строки;
- $ – конец строки.
- Жадные квантификаторы (находят совпадения максимально возможной длины), X – некоторая исчисляемая конструкция:
- X? – X встречается один раз или не встречается вообще;
- X* – X ноль или больше раз;
- X+ – X один или больше раз;
- X{n} – X ровно n раз;
- X{n,} – X хотя бы n раз;
- X{n,m} – X хотя бы n, но не более m раз.
- Ленивые квантификаторы (находят совпадения минимально возможной длины), X – некоторая исчисляемая конструкция:
- X?? – X встречается один раз или не встречается вообще;
- X*? – X ноль или больше раз;
- X+? – X один или больше раз;
- X{n}? – X ровно n раз;
- X{n,}? – X хотя бы n раз;
- X{n,m}? – X хотя бы n, но не более m раз.
- Логические операции (X, Y – некоторая конструкция или набор конструкций):
- XY – X обязан следовать за Y;
- X|Y – либо X, либо Y (предпочтительнее X);
- (X) – X в качестве группы захвата.
- Обратные ссылки:
- \n – то же соответствие, что было найдено группой захвата с номером n;
- \и<имя> – то же соответствие, что было найдено группой захвата с именем <имя>.
- Экранирование:
- \ – экранирует следующий символ.
- Специальные конструкции (X – некоторая конструкция или набор конструкций):
- (?<имя>X) – X как именованная группа захвата с именем <имя>;
- (?:X) – X как не группа захвата;
- (?=X) – X как проверка присутствия с просмотром вперед;
- (?!X) – X как проверка отсутствия с просмотром вперед;
- (?рмо) – указывается только в конце регулярного выражения. Включает флаги-настройки поиска.
Флаги-настройки поиска:
- р – включает режим регистронезависимого поиска. То есть при выполнении операций поиска, замены, разбиения регистр символов игнорируется;
- м – многострочный режим. Изменяет значение символов “^” и “$” так, что они совпадают, соответственно, с началом и концом любой строки, а не только с началом и концом всего текста;
- о – указывает однострочный режим. Изменяет значение точки (.) так, что она соответствует любому символу (вместо любого символа, кроме терминаторов строк).