Подтвердить что ты не робот

RegEx: наименьшее совпадение или неправильное совпадение

Как сообщить RegEx (.NET-версия), чтобы получить наименьшее допустимое совпадение вместо самого большого?

4b9b3361

Ответ 1

Для регулярного выражения, такого как .* или .+, добавьте вопросительный знак (.*? или .+?), чтобы соответствовать как можно меньше символов. Для необязательного соответствия раздела (?:blah)?, но без согласования, если это абсолютно необходимо, используйте что-то вроде (?:blah){0,1}?. Для повторяющегося соответствия (используя синтаксис {n,} или {n,m}) добавьте вопросительный знак, чтобы попытаться соответствовать как можно меньше (например, {3,}? или {5,7}?).

Документация на кванторы регулярных выражений также могут быть полезны.

Ответ 2

Нежелательный оператор, ?. Например:

.*?

Ответ 3

Нежелательный оператор не означает кратчайшее совпадение:

abcabk

a.+?k будет соответствовать всей строке (в этом примере), а не только последним трем знакам.

Я бы хотел найти наименьшее возможное совпадение.

Это то, что последнее возможное совпадение для 'a' должно позволить все совпадения для k.

Я предполагаю, что единственный способ сделать это - использовать выражение типа:

a[^a]+?k