¿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?RegEx: la coincidencia más pequeña posible o la coincidencia no coincidente
Respuesta
Para una expresión regular como .*
o .+
, anexar un signo de interrogación (o .*?
.+?
) para que coincida con el menor número de caracteres posible. Para hacer coincidir opcionalmente una sección (?:blah)?
pero sin hacer coincidir a menos que sea absolutamente necesario, use algo como (?:blah){0,1}?
. Para una coincidencia que se repite (utilizando la sintaxis {n,}
o {n,m}
), agregue un signo de interrogación para intentar hacer coincidir el menor número posible (por ejemplo, {3,}?
o {5,7}?
).
La documentación en regular expression quantifiers también puede ser útil.
El operador no codicioso, ?
. De este modo:
.*?
El operador no codiciosos no significa que la coincidencia más corta posible:
abcabk
a.+?k
coincidirá con la cadena completa (en este ejemplo) en lugar de sólo los últimos tres signos.
Me gustaría encontrar realmente la menor coincidencia posible en su lugar.
Esa es la última coincidencia posible para 'a
' aún permitir todas las coincidencias para k
.
Creo que la única manera de hacerlo es hacer uso de una expresión como:
a[^a]+?k
O busque en orden inverso, empezando por el final, cuando las coincidencias están anidadas: "(ab (abk) bk)". – LBogaardt
@LBogaardt ¿cómo se buscaría en el orden inverso? no lo entiendo – azerafati
@LBogaardt Pregunta todavía abierta: ¿Cómo se buscaría en el orden inverso? Digamos que quiero obtener 'cab'. Si mi entrada es 'caaacab' y busco' a. *? B' devolverá la cadena completa en lugar de la coincidencia corta adentro. ¿Cómo buscaría al revés desde la 'b'? – C4u
- 1. Índice regex en una cadena coincidente donde falló la coincidencia
- 2. regex calle dirección coincidencia
- 3. .NET Regex admite la coincidencia global?
- 4. Javascript RegEx coincidencia parcial
- 5. jQuery coincidencia regex
- 6. vba regex solo devuelve la primera coincidencia
- 7. Obtener la última coincidencia con Boost :: Regex
- 8. Devolver la primera coincidencia de Ruby regex
- 9. Expresiones regulares C# - ¿es posible extraer coincidencias durante la coincidencia?
- 10. Regex elegante coincidencia de patrón
- 11. Coincidencia de RegEx entre caracteres
- 12. Coincidencia de patrón con más de una coincidencia
- 13. Porcentaje de coincidencia de coincidencia con Levenshtein Coincidencia de distancia
- 14. Regex: solo deje espacio o nada después de una coincidencia
- 15. ¿Cómo puedo reemplazar una coincidencia de subcadena regex en Javascript?
- 16. Mejor práctica: coincidencia parcial de Regex
- 17. Encontrar la coincidencia de la cadena parcial
- 18. Regex en python: ¿es posible obtener la coincidencia, el reemplazo y la cadena final?
- 19. Python RegEx Coincidencia de nueva línea
- 20. coincidencia de Java Regex entre llaves $
- 21. Fecha de coincidencia de Python regex
- 22. coincidencia de una línea en JS regex
- 23. Coincidencia máxima para la Cadena
- 24. C# más cercano equivalente a la expresión de coincidencia F #?
- 25. Scala - la designación de un elemento coincidente en la coincidencia de patrones
- 26. Ignorando el espacio en blanco para una coincidencia Regex
- 27. Azure: 2 veces más pequeña o una pequeña instancia pequeña
- 28. No coincidencia de bloqueo-token
- 29. Captura de la primera coincidencia con expresiones regulares (C#)
- 30. Coincidencia de patrones no especializados
No sé, si yo soy el único que tiene este mal entendido, pero es importante tener en cuenta: Si bien es cierto que el operador no codicioso coincidirá con la menor cantidad de personajes posible, puede que aún no sea el juego que se busca. "La menor cantidad posible de caracteres" no equivale a la "coincidencia más corta posible" con respecto a los estándares RegEx. Ver la respuesta debajo de mi comentario: con 'abcabk' y' a. +? K', RegEx coincidirá con la cadena completa. – Jayjayyy