我有以下正则表达式
(?<!<[title|h1|a][^>]*>[^<]*)(?<!<[meta|img][^>]*[^/>])(someword)
我基本上使用上面的代码用网址替换某些单词。即。
The all new product x
将成为
The all new <a href="/productx">product x</a>
它全部按预期工作。我正在做负面看,所以我不替换倾斜,h1和锚标签的东西。我现在需要对此进行扩展,以便在锚标记中有一个粗体标记,那么它就不匹配了。
<a href="/something">The all new <b>product x</b></a>
不应该被替换。我现在的方式是负面的lookbehind找到一个粗体标签和匹配。如果它在里面,我只希望它跳过。对于那些感兴趣的人,我需要这个,因为我的搜索页面将结果返回为
<a href="/something"><b>searchterm</b> some other text</a>
任何帮助非常感谢
答案 0 :(得分:0)
简短的回答是,你不能写一个好的,单一的正则表达式来做你想要的。总会有特殊情况会导致误报。有更好的方法来做你想要的。话虽这么说,如果你仍然想要一个正则表达式的解决方案,这可能更接近你想要的:
(?<!<(?:title|h1|a)[^>]*>(?:[^<]|<[^/]|</(?!title|h1|a))*|<[meta|img][^>]*)(someword)