【问题标题】:Find string that is not between specific html tag查找不在特定 html 标记之间的字符串
【发布时间】:2015-03-06 19:46:56
【问题描述】:

我被要求使用正则表达式来解析 HTML。我确实意识到正则表达式不利于 HTML 匹配。

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

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

示例: <sup>®</sup>

我相信这将涉及使用负前瞻和后瞻。我的第一个想法是:

(?<!<sup>)®(?!<\/sup>)

不幸的是,这失败了,因为我不相信您可以在这种组合中进行前瞻和后瞻。

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

®(?!<\/sup>)

...但我想知道是否可以通过这种方式将前瞻和后瞻结合起来。还是我应该使用另一种技术?

提前致谢

【问题讨论】:

    标签: regex-lookarounds


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-18
      • 1970-01-01
      • 2010-10-31
      • 1970-01-01
      • 1970-01-01
      • 2016-01-12
      • 2021-07-02
      • 2021-11-13
      相关资源
      最近更新 更多