Поделиться через


Параметры регулярных выражений

Обновлен: Ноябрь 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.

См. также

Другие ресурсы

Элементы языка регулярных выражений