tengo la siguiente cadena:Regex reemplazar texto pero excluyen el texto se vea entre etiqueta específica
Lorem ipsum Test dolor sit amet, consetetur sadipscing elitr, sed diam nonumy <a href="http://Test.com/url">Test</a> eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd sed Test dolores et ea rebum. Stet clita kasd gubergren, no sea <a href="http://url.com">Test xyz</a> takimata sanctus est Lorem ipsum dolor sit amet.
Ahora me reemplazar la cadena fuera de las etiquetas de un no entre las etiquetas (por ejemplo, sustituidos con '1234' 'prueba')
Lorem ipsum 1234 dolor sit amet, consetetur sadipscing elitr, sed diam nonumy <a href="http://Test.com/url">Test</a> eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd sed 1234 dolores et ea rebum. Stet clita kasd gubergren, no sea <a href="http://url.com">Test xyz</a> takimata sanctus est Lorem ipsum dolor sit amet.
empecé con esta expresión regular: (?!<a[^>]*>)(Test)([^<])(?!</a>)
Sin embargo, dos problemas no se resuelven:
- El texto de 'Prueba' se sustituyó también dentro de las etiquetas (por ejemplo)
- dice el texto entre la etiqueta no coincide exactamente con el texto buscado, también se reemplazará (por ejemplo,
<a href="http://url">Test xyz</a>
)
Espero que alguien tenga una solución para resolver este problema.
También añadió la bandera \ b para que coincida con un límite de palabra: (?!? ] *>) (\ b BTest \) (?! [^ <]*?) – Weri
Eso debería dar más al optimizador de expresiones regex para trabajar. Tampoco debería afectar negativamente sus coincidencias, siempre que '_Test_, _Test, o Test_' no estén en su documento (y suponiendo que no le importaría hacerlas coincidir si lo fueran). – protist
El lookaheaed antes de Test y el partido perezoso no tienen sentido. Ver mi respuesta – Adam