我有一个相当长和复杂的HTML文档,我需要找到给定字符串的所有出现,例如, “foobar”,除非它位于<a>
和</a>
锚标签之间。正则表达式的挑战 - 在HTML文档中找到“foobar”
问题是:它可能位于锚标记之间的某些文本内,例如,
<a>this is a foobar test</a>
即使在这种情况下,我应该不找到匹配。
我该怎么用一个正则表达式?我不会有麻烦找到<a>foobar</a>
等等 - 但要找到每一个“foobar的” 除了时,它的锚标记之间,并通过可能有很多其他的文字环绕似乎有点棘手.....
任何想法??
答:
我们结束了使用这个表达式来解决这个问题 - 万一有人是)好奇,或b)在同一个地方:-)
(?<!\<A.*(?=\<\/A))Test(?!\<\/A.*(?=\<A))
作为巴特评论,分析HTML正则表达式的解决方案往往不是失败在某些情况下(嵌入式标签),或者是极其复杂的。考虑使用DOM解析器来查找锚标记中的所有文本,然后对其执行字符串搜索或正则表达式。 – TrueWill 2009-10-02 17:47:46
更正 - 使用DOM搜索未包含在锚标记中的文本节点。 – TrueWill 2009-10-02 17:49:56