¿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
abcabk
ya.+?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.+?k
coincidirá 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 escaaacab
y 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"