¿Cómo le digo a RegEx (versión .NET) que obtenga la coincidencia válida más pequeña en lugar de la más grande?
.net
regex
regex-greedy
non-greedy
Jonathan Allen
fuente
fuente

abcabkya.+?k, RegEx coincidirá con toda la cadena.El operador no expansivo,
?. Al igual que:fuente
El operador no codicioso no significa la coincidencia más corta posible:
a.+?kcoincidirá con la cadena completa (en este ejemplo) en lugar de solo los últimos tres signos.En su lugar, me gustaría encontrar la coincidencia más pequeña posible.
Esa es la última coincidencia posible para '
a' para permitir todas las coincidenciask.Supongo que la única forma de hacerlo es utilizar una expresión como:
Mostrar fragmento de código
fuente
cab. Si mi entrada escaaacaby la buscoa.*?b, devolverá la cadena completa en lugar de la coincidencia corta dentro. ¿Cómo buscaría hacia atrás desde elb?START[^START]*?END(donde START y END son las expresiones regulares de los caracteres de inicio y finalización). En esencia, significa "partido cualquier cosa de principio a fin, donde el entre caracteres no incluyen START"