Как сообщить RegEx (версия .NET) получить наименьшее допустимое совпадение вместо наибольшего?
.net
regex
regex-greedy
non-greedy
Джонатан Аллен
источник
источник
abcabk
иa.+?k
RegEx будет соответствовать всей строке.Нежадный оператор
?
. Вот так:источник
Нежадный оператор не означает кратчайшее возможное совпадение:
a.+?k
будет соответствовать всей строке (в этом примере), а не только последним трем знакам.Вместо этого я бы хотел найти наименьшее возможное совпадение.
Это последнее возможное совпадение для '
a
', для которого разрешены все совпаденияk
.Я думаю, единственный способ сделать это - использовать выражение вроде:
Показать фрагмент кода
источник
cab
. Если мой вводcaaacab
и я ищу,a.*?b
он вернет полную строку вместо короткого совпадения внутри. Как мне искать в обратном направлении отb
?START[^START]*?END
(где START и END - ваши регулярные выражения начального и конечного символов). По сути, это означает «сопоставить что-либо от START до END, где промежуточные символы не включают START снова»