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