正则表达式替换文本但在文本位于特定标记之间时排除

前端之家收集整理的这篇文章主要介绍了正则表达式替换文本但在文本位于特定标记之间时排除前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有以下字符串:
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.

现在我将标签之外的字符串’Test’替换为不在标签之间(例如替换为’1234′).

Lorem ipsum 1234 dolor sit amet,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.

我从这个正则表达式开始:(?!< a [^>] *>)(测试)([^<])(?!< / a>)

但是有两个问题没有解决

>文本’Test’也被替换为Tags(例如)
>标签之间的文本与搜索到的文本不完全匹配,它也会被替换(例如< a href =“http:// url”> Test xyz< / a>)

我希望有人有解决方案来解决这个问题.

(?!<a[^>]*?>)(Test)(?![^<]*?</a>)

与zb226相同,但使用惰性匹配进行优化

此外,不建议在原始HTML上使用正则表达式.

猜你在找的正则表达式相关文章