我被要求使用正则表达式来解析HTML。我确实认为正则表达式对于HTML匹配是不好的。
我想找到一个特定的字符串,并评估它是否在两个字符串之间。
在此示例中,®
必须紧接在<sup>
和</sup>
之间
实施例:
<sup>®</sup>
我认为这将涉及使用负面的前瞻和外观。我的第一个想法是:
(?<!<sup>)®(?!<\/sup>)
不幸的是,这个失败了,因为我不相信你能在这个组合中做一个前瞻和后视。
只是使用负向前瞻确实有用,并且可能足以满足我的目的......
®(?!<\/sup>)
...但我想知道是否有可能以这种方式结合前瞻和后视。或者我应该使用另一种技术吗?
提前致谢
答案 0 :(得分:0)
您的初始正则表达式(即(?<!<sup>)®(?!<\/sup>)
)是正确的,如https://www.debuggex.com/r/WyY9y0Zq2Krz_3Xm中的示例用法所示
但是,它适用于Python和PCRE,但不适用于Javascript(您可以通过在下拉列表中选择每个来检查)。 Javascript没有负面的lookbehind支持。