Ich habe die folgende Zeichenfolge:Regex Text ersetzen, aber ausschließen, wenn der Text zwischen bestimmtem Tag ist
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.
Jetzt würde ich die Zeichenfolge ‚Test‘ außerhalb von Tags ersetzt eine nicht zwischen den Tags (zB ersetzt mit ‚1234‘).
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.
Ich begann mit diesem Regex: (?!<a[^>]*>)(Test)([^<])(?!</a>)
aber zwei Probleme sind nicht gelöst:
- Der Text 'Test' wird auch innerhalb von Tags ersetzt (zB)
- den Text Does zwischen dem Tag stimmt der gesuchte Text nicht genau überein, es wird auch ersetzt (zB
<a href="http://url">Test xyz</a>
)
Ich hoffe, jemand hat eine Lösung, um dieses Problem zu lösen.
ich die \ b Flagge auch eine Wortgrenze entsprechen ändern hinzugefügt (?! [^ <]*?) – Weri
Das sollte den Regex-Optimierer mehr zum Arbeiten geben. Es sollte auch keine negativen Auswirkungen auf Ihre Übereinstimmungen haben, solange '_Test_, _Test oder Test_' nicht in Ihrem Dokument enthalten sind (und vorausgesetzt, Sie würden nicht darauf achten, sie zu vergleichen, wenn sie es wären). – protist
Die Lookaheed vor Test und das faule Match sind bedeutungslos. Siehe meine Antwort. – Adam