Где задокументирован приоритет оператора для класса .NET Regex? - PullRequest
5 голосов
/ 22 февраля 2012

Где задан порядок приоритета операторов для класса .NET Regex ?

Я вижу это , но это для JScript.

Кроме того, похоже, что RegexOptions.ECMAScript не влияет, но подтверждение будет полезно.

Ответы [ 2 ]

1 голос
/ 17 марта 2017

Об этом давно спрашивали, но не отвечали.

Точность оператора регулярных выражений .Net определяется внизу страницы Синтаксис регулярного выражения 1 .

1 голос
/ 28 февраля 2012

Не думаю, что реальный ответ так прост, как вам хотелось бы.Короткий (и неполный) ответ - просто «все выражения оцениваются слева направо» ...

Для длинного ответа перейдите сюда.

http://msdn.microsoft.com/en-us/library/e347654k.aspx

. Механизм регулярных выражений .NET Framework представляет собой средство сравнения регулярных выражений с обратным отслеживанием, которое включает в себя традиционный недетерминированный механизм конечных автоматов (NFA) ... традиционные механизмы NFA выполняют сопоставление с образцом, их порядок обработки определяется шаблоном регулярного выражения .Поскольку это обрабатывает определенный элемент языка, двигатель использует жадное сопоставление;то есть он соответствует как можно большей части входной строки.Но он также сохраняет свое состояние после успешного сопоставления подвыражения.Если совпадение в конечном итоге не удается, механизм может вернуться в сохраненное состояние, чтобы он мог попробовать дополнительные совпадения.

Изменить: Забыл ответить на вторую часть вашего вопроса.

Что касается RegexOptions.ECMAScript, вы можете ссылаться на эти документы:

http://msdn.microsoft.com/en-us/library/yd1hzczs.aspx

Поведение ECMAScript и канонических регулярных выражений отличается в трех областях: класс символовсинтаксис, самозахватывающие группы захвата и восьмеричная или обратная интерпретация.

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

...