У меня есть .net regex, который я тестирую с помощью Windows Powershell. Выход заключается в следующем:Ненадежный квантификатор регулярных выражений дает жадный результат
> [System.Text.RegularExpressions.Regex]::Match("aaa aaa bbb", "aaa.*?bbb")
Groups : {aaa aaa bbb}
Success : True
Captures : {aaa aaa bbb}
Index : 0
Length : 11
Value : aaa aaa bbb
Мое ожидание, что с помощью ?
квантор может вызвать матч будет aaa bbb
, как вторая группа из является достаточным, чтобы удовлетворять выражению. Является ли мое понимание не-жадных кванторов ошибочным, или я неправильно тестирую?
Примечание: это явно не та же проблема, как Regular Expression nongreedy is greedy
Я просто сделал то, что должен был сделать в первую очередь, и посоветовался с соответствующей главой Фридла. Это привело меня к «aaa» ((?! Aaa).) * Bbb', что более или менее то, что вы сказали, за исключением того, что ваш ответ содержит дополнительные сведения о том, как сделать невозможным захват подвыражения, а также тесты для bbb в отрицательном смотреть вперед. Хороший ответ. –