【问题标题】:Find exact word between two HTML tags查找两个 HTML 标记之间的确切单词
【发布时间】:2014-07-30 22:53:35
【问题描述】:

如果可能的话,我需要找到正确的正则表达式(Perl 语法,因为我使用的是 Sublime Text)来在两个 span 标签内找到字符串 ' 和 ' 。 这条线看起来像这样:

<span class="CEURAUTHORS">Xing Xu, Atsushi Shimada and Rin-Ichiro Taniguchi</span>

我试过了

(?<=CEURAUTHORS">)\sand\s(?=.*</span>)

但这不是我想要的。 有什么想法吗?

【问题讨论】:

  • 什么是找'和'
  • 哪个正则表达式? PCRE 会让你这样做:regex101.com/r/sS0qS6/1 但其他人可能不那么友好。是 Python、Javascript、Ruby、...?
  • 根据@RahilWazir 的评论,请显示您尝试过的结果以及您希望看到的输出结果。
  • @OnlineCop 解决方案适合我:我不知道\K 的用途:)

标签: regex tags


【解决方案1】:

假设没有嵌套标签,这里有三个选项,具体取决于您的正则表达式风格。

选项 1:捕获组(适用于任何地方)

<span[^>]*>(?:(?!</span).)*( and )[^<>]*</span>

比赛在第 1 组

选项 2:\K 在 Perl、PCRE(PHP、R...)、Ruby 2+ 中

<span[^>]*>(?:(?!</span).)*\K and (?=[^<>]*</span>)

选项 3:无限后视(.NET,regex Python 模块)

(?<=<span[^>]*>(?:(?!</span).)*) and (?=[^<>]*</span>)

【讨论】:

    【解决方案2】:

    你可以使用这个正则表达式:

    <span.*?>.*(\band\b).*<\/span>
    

    Working demo

    【讨论】:

    • 这很接近但不太正确(您可以看到问题in this demo
    • 嘿@zx81 你好吗?我明白了你的观点,我认为我们应该向 OP 提出这个问题,也许他也想要这个,但多亏了这一点。
    • 我很好,谢谢,很高兴看到你回答。 :) 不是刻薄的意思——我相信你知道——但是从规范来看,如果他需要那个正则表达式,我会感到惊讶,因为这不是唯一的问题,请参阅this one 第一个and 不匹配。
    猜你喜欢
    • 2019-06-24
    • 2014-04-10
    • 1970-01-01
    • 1970-01-01
    • 2011-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多