如何在字符串中查找关键字,而不是在特殊标记之间查找关键字


Howto find a keyword in String not between special Tags?

>im 试图在这样的字符串中查找关键字列表:

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam 
nonumy eirmod tempor <b>invidunt ut labore et dolore</b> magna aliquyam erat, 
sed diam voluptua. <a href="not/replace/me/">dolore</a> ipsum erat.

。具有以下正则表达式:

%'b(Lorem)'b(?=[^>]*(<(link|a)|$))%msiu
%'b(dolore)'b(?=[^>]*(<(link|a)|$))%msiu

这在大多数时间都很好。但是,如果字符串中的其他标签(如上面示例中的粗体标签),则它什么也找不到。如果这不在里面,它可以正常工作。

我想要的结果:

<a href="myurl/to/somewhere/">Lorem</a> ipsum dolor sit amet, consetetur sadipscing elitr, sed diam 
nonumy eirmod tempor <b>invidunt ut labore et <a href="url/to/">dolore</a></b> magna aliquyam erat, 
sed diam voluptua. <a href="not/replace/me/">dolore</a> ipsum erat.

目前,仅当字符串中没有其他标签(如 B 或其他)时,它才有效。但是,如果像 A链接这样的标签在里面,它也可以工作。只是如果字符串内有其他标签,则不会替换任何内容。

我做错了什么?

感谢您的帮助!

我想我已经解决了:

 %(?i)'bMY_KEYWORD'b(?=[^<>]*(?:<'w|<'/[^link|a]|$))%msi

就我而言,它可以:)