Imagine que tenemos una cadena larga que contiene las subcadenas 'cat' y 'dog', así como otros caracteres aleatorios, por ejemplo.Problema de coincidencia de patrón de cadena
cat x dog cat x cat x dog x dog x cat x dog x cat
Aquí 'x' representa cualquier secuencia aleatoria de caracteres (pero no 'gato' o 'perro').
Lo que quiero hacer es encontrar cada 'gato' que es seguido por cualquier caracter excepto 'perro' y luego por 'gato'. Quiero eliminar esa primera instancia de 'gato' en cada caso.
En este caso, yo quiero quitar el [cat] entre corchetes porque no hay 'perro' después de que antes de la próxima 'gato':
cat x dog [cat] x cat x dog x dog x cat x dog x cat
para terminar con:
cat x dog x cat x dog x dog x cat x dog x cat
¿Cómo se puede hacer esto?
pensé de alguna manera mediante una expresión regular como (n) (? = (N)) como VonC recomienda here
(cat)(?=(.*cat))
para que coincida con todos los pares de 'gato' en la cadena. Pero todavía no estoy seguro de cómo podría usar esto para eliminar a cada gato que no es seguido por 'perro' antes de 'gato'.
El problema real que estoy abordando es en Java. Pero realmente solo estoy buscando una solución general de pseudocódigo/expresión regular.
Hola. Sería útil saber en qué idioma está trabajando. –
@klausbyskov: ¿Está seguro de esa edición? Las siguientes dos oraciones y el ejemplo me parecen indicar que "seguido" es de hecho lo que él quiso decir. –
¡Quise decir 'seguido' no precedido! – nodmonkey