查找不在特定html标记之间的字符串

时间:2015-03-06 19:46:57

标签: regex-lookarounds

我被要求使用正则表达式来解析HTML。我确实认为正则表达式对于HTML匹配是不好的。

我想找到一个特定的字符串,并评估它是否在两个字符串之间。

在此示例中,&reg;必须紧接在<sup></sup>之间

实施例: <sup>&reg;</sup>

我认为这将涉及使用负面的前瞻和外观。我的第一个想法是:

(?<!<sup>)&reg;(?!<\/sup>)

不幸的是,这个失败了,因为我不相信你能在这个组合中做一个前瞻和后视。

只是使用负向前瞻确实有用,并且可能足以满足我的目的......

&reg;(?!<\/sup>)

...但我想知道是否有可能以这种方式结合前瞻和后视。或者我应该使用另一种技术吗?

提前致谢

1 个答案:

答案 0 :(得分:0)

您的初始正则表达式(即(?<!<sup>)&reg;(?!<\/sup>))是正确的,如https://www.debuggex.com/r/WyY9y0Zq2Krz_3Xm中的示例用法所示

但是,它适用于Python和PCRE,但不适用于Javascript(您可以通过在下拉列表中选择每个来检查)。 Javascript没有负面的lookbehind支持。