Регулярное выражение: наименьшее возможное совпадение или несоответствие
Как я могу сказать RegEx (версия .NET), чтобы получить наименьшее допустимое совпадение вместо самого большого?
3 ответа:
для регулярного выражения, как
.*или.+добавить вопросительный знак (.*?или.+?), чтобы соответствовать как можно меньше символов. Чтобы дополнительно соответствовать разделу(?:blah)?но без сопоставления, если это абсолютно необходимо, используйте что-то вроде(?:blah){0,1}?. Для повторяющегося матча (либо с помощью{n,}или{n,m}синтаксис) добавьте знак вопроса, чтобы попытаться соответствовать как можно меньше (например,{3,}?или{5,7}?).документация на регулярное выражение кванторы также может быть полезным.
не жадный оператор не означает кратчайшее возможное совпадение:
abcabk
a.+?kбудет соответствовать всей строке (в этом примере) вместо только последних трех знаков.Я хотел бы на самом деле найти наименьшее возможное совпадение вместо этого.
Это последний возможный матч для'
a' разрешить все матчи заk.Я думаю, что единственный способ сделать это-использовать выражение например:
a[^a]+?k