我认为我在大多数时候都有这个工作,但是想知道是否有更好的方法来编写它:
/\b(Word)(?!.*?<\/a>)(?!.*?>)\b/
我试图在未链接时匹配Word,并且它不是HTML标记的一部分(如<a href="" title="Word">
不匹配)。
据我所知,如果可能的话,最好使用否定的字符类,而不是让它变得懒惰。我试过这样做,但无法理解。我甚至不知道这是否可能,但我想我会把它扔出去。
答案 0 :(得分:1)
您要查找的否定字符类是[^<>]*
。这将跳过任何标签边界。
/\b(Word) (?! [^<>]*<\/a> | [^<]*>) \b/x
请注意,如果链接中有进一步的标记,则查找</a>
将允许正则表达式匹配;例如,不会跳过粗体<a>..<b>Word</b>..</a>
字。 (检查这些事情需要比前瞻更多的努力。)