Tengo una lista de cadenas. Algunos de ellos son de la forma 123-...456
. La parte variable "..." puede ser:¿Cómo hacer coincidir, pero no capturar, parte de una expresión regular?
- la cadena "apple" seguida de un guion, p.
123-apple-456
- la cadena "banana" seguida de un guion, p. Ej.
123-banana-456
- una cadena en blanco, p.
123-456
(tenga en cuenta que hay un solo guión)
Cualquier palabra que no sea "apple" o "banana" no es válida.
Para estos tres casos, me gustaría hacer coincidir "manzana", "banana" y "", respectivamente. Tenga en cuenta que nunca quiero capturar el guión, pero siempre quiero coincidir con. Si la cadena no tiene el formato 123-...456
como se describe arriba, entonces no hay ninguna coincidencia.
¿Cómo escribo una expresión regular para hacer esto? Supongamos que tengo un sabor que permite mirar hacia adelante, mirar hacia atrás, mirar hacia afuera y grupos que no capturan.
La observación clave aquí es que cuando se tiene ya sea "manzana" o "banana", que también debe tener el guión final, pero que no desea para que coincidan. Y cuando está haciendo coincidir la cadena en blanco, no debe tener el guión final. Una expresión regular que encapsula esta afirmación será la correcta, creo.
Depende del sabor de la expresión regular. ¿Qué lenguaje de programación y/o sabor regex estás usando? – BoltClock
@BoltClock: Agregué algunas aclaraciones. Gracias por la respuesta. –
¿Desea hacer coincidir todo excepto los guiones? – BrunoLM