Параметры регулярных выражений
Обновлен: Ноябрь 2007
Можно изменить шаблон регулярного выражения с помощью параметров, влияющих на поведение сопоставления. Параметры регулярных выражений можно задавать одним из двух основных способов: с помощью параметра options в конструкторе Regex(pattern, options), где options — это побитовое логическое объединение перечисляемых значений RegexOptions, или в группе знаков регулярного выражения, используя встроенную конструкцию группировки (?imnsx-imnsx:) или другую конструкцию (?imnsx-imnsx).
Во встроенных конструкциях параметра знак минус (-) перед параметром или набором параметров отключает эти параметры. Например, встроенная конструкция (?ix-ms) включает параметры IgnoreCase и IgnorePatternWhiteSpace и отключает параметры MultiLine и Singleline. По умолчанию все параметры регулярного выражения отключены.
В следующей таблице представлены элементы перечисления RegexOptions и соответствующие им знаки встроенных параметров. Обратите внимание, что параметры RightToLeft и Compiled применяются только к целому выражению и не могут быть встроенными. (Они могут быть заданы только в параметре options конструктора Regex.) Параметры None и ECMAScript не могут быть встроенными.
Элемент RegexOption |
Встроенный знак |
Описание |
---|---|---|
None |
не определено |
Указывает, что ни один параметр не задан. |
IgnoreCase |
i |
Задает сопоставление, не учитывающее регистр. |
Multiline |
m |
Устанавливает многострочный режим. Изменяет функцию знаков ^ и $ так, что они определяют соответствие в начале и конце любой строки, а не только в начале и конце полной строки, содержащей эти строки. |
ExplicitCapture |
n |
Указывает, что допустимыми собираемыми группами являются только группы, заданные явно именем или номером в форме (?<name>…). Это позволяет использовать круглые скобки для задания групп, не являющихся собираемыми, без применения синтаксически неудачной конструкции (?:…). |
Compiled |
не определено |
Определяет компиляцию регулярного выражения в сборку. Создает код промежуточного языка MSIL для данного регулярного выражения, благодаря чему повышается производительность в процессе запуска. |
Singleline |
s |
Устанавливает однострочный режим. Изменяет функцию точки (.) так, что она соответствует любому знаку, за исключением \n. |
IgnorePatternWhitespace |
x |
Предписывает исключить из группы знаков пробелы, не являющиеся escape-знаками, и включает комментарии, начинающиеся со знака #. (Список escape-знаков см. в разделе Escape-знаки.) Пробелы никогда не исключаются из состава класса знаков. |
RightToLeft |
не определено |
Задает поиск справа налево вместо поиска слева направо. Регулярное выражение с этим параметром перемещается от начального положения влево, а не вправо. (По этой причине начальное положение должно быть задано как конец, а не начало строки.) Этот параметр не следует задавать внутри потока, чтобы не получить регулярное выражение с бесконечным циклом. Вместо этого можно применить конструкции обратного поиска (?<), которые можно использовать как вложенные выражения. Параметр RightToLeft изменяет только направление поиска. Он не изменяет направления строки поиска. Утверждения lookahead и lookbehind не изменяются: lookahead выполняет поиск вправо; lookbehind выполняет поиск влево. |
ECMAScript |
не определено |
Задает для регулярного выражения поведение, совместимое с ECMAScript. Этот параметр можно использовать только в сочетании с флагами IgnoreCase и Multiline. Использование ECMAScript с любыми другими флагами вызывает исключение. |
CultureInvariant |
не определено |
Предписывает игнорировать языковые различия в региональных параметрах. Дополнительные сведения см. в разделе Выполнение операций без учета региональных стандартов в пространстве имен RegularExpressions. |