Me gustaría poder buscar una cadena de varias palabras, cuando encuentre una, quiero dividir la cadena en ese punto en 3 partes (izquierda, coincidencia, derecha), el texto coincidente sería excluido, y el proceso continuaría con la nueva cadena izquierda + derecha.String Find/Replace Algorithm
Ahora, una vez que tengo todas las coincidencias hechas, necesito revertir el proceso reinsertando las palabras coincidentes (o un reemplazo para ellas) en el punto en que fueron eliminadas. Nunca he encontrado lo que quería en ninguna de mis búsquedas, así que pensé que pediría su opinión aquí en SO.
Háganme saber si esta pregunta necesita una descripción más detallada.
BTW - por el momento, tengo un algoritmo muy pobre que reemplaza el texto coincidente con un token de cadena único, y luego reemplaza los tokens con el texto de reemplazo para la coincidencia adecuada después de que se hayan hecho todas las coincidencias.
Este es el objetivo:
one two three four five six
partido "tres" reemplazar con foo (recuerda que encontramos tres, y donde lo encontramos)
one two four five six
|
three
partido "dos por cuatro" y evitar que se de ser igualada por cualquier cosa (editado para mayor claridad)
one five six
|
two four
|
three
en este punto, no se puede igualar por ejemplo "en la e dos"
todos los partidos se han encontrado, ahora ponen sus reemplazos de vuelta en (en orden inverso)
one two four five six
|
three
one two foo four five six
Cuál es el punto? Evitar que el texto de reemplazo de un partido coincida con otro patrón. (todos los patrones se ejecutan al mismo tiempo y en el mismo orden para cada cadena que se procesa)
No estoy seguro de que el idioma sea importante, pero estoy usando Lua en este caso.
Voy a tratar de reformular, tengo una lista de patrones que quiero encontrar en una cadena dada, si encuentro una, quiero eliminar esa parte de la cadena para que no coincida con ninguna otra cosa, pero quiero para realizar un seguimiento de dónde lo he encontrado para que pueda insertar el texto de reemplazo allí una vez he terminado de tratar de igualar mi lista de patrones
Aquí hay una pregunta relacionada:
Shell script - search and replace text in multiple files using a list of strings
Idioma? ¿Marco de referencia? –
Entonces, después de que el algoritmo haya terminado, ¿la cadena es tal como la dejaste? ¿Por qué necesitas quitar las cuerdas en primer lugar? ¿Qué estás * haciendo * con los resultados de esto? Puede haber una solución más fácil. Por favor publique el idioma que está usando. –
¿Qué quiere decir exactamente con continuar con el lado izquierdo + derecho? Supongamos que el texto original era "abcdefgh", y sus dos "palabras" son "cd" y "bef", ¿se dividiría primero en "ab" - "cd" - "efgh", y luego buscaría en "abefgh", y encuentra "bef", y divide en "a" - "bef" - "gh" y luego continúa con "agh", y no encuentras nada? –