【问题标题】:Get all numbers between all HTML tags with regex使用正则表达式获取所有 HTML 标记之间的所有数字
【发布时间】:2018-11-05 19:33:49
【问题描述】:

我有一个这样的 HTML 代码:

<div style="font-size:15px;">This is test number 55</div>
<span class="max5">Your number is: 5599</span>

我想获取 HTML 标记之间必须为 555599 的所有数字,我尝试了这些模式但没有运气:

第一:

<\s*[a-z][^>]*>(\d+)<\s*/\s*[a-z]>

然后:

\>(\d*)\<

【问题讨论】:

  • 你不能使用 DOM 解析器来代替吗?似乎更合适。
  • 先剥离所有标签。然后搜索你想要的号码。
  • 您使用的是哪种正则表达式?我认为您的 / 令牌在大多数情况下都会引发语法错误。
  • 剥离所有标签regex101.com/r/NsR6Pa/1然后找到你想要的号码。
  • 或者如果你需要更多的内容信息到这个数字,这就是regex101.com/r/BL3e8m/1

标签: regex


【解决方案1】:

如果您真的只能使用正则表达式,这在大多数情况下应该可以工作:

/\d+(?![^&lt;]*&gt;)/g

演示https://regex101.com/r/b71t0r/1(此处为 PHP 正则表达式,但应适用于所有流行的引擎)

【讨论】:

    【解决方案2】:

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

    /<(\w+)[^>]*?>(.*?)<\/\1>/g
    

    它首先匹配一个开始标签,然后在Group 1中捕获该标签的名称'(\w+)',然后匹配任何字符直到'&gt;',任意次数,然后创建一个@ 987654325@ 与任意数量的任意字符匹配,在匹配 '&lt;/' 后跟来自 Group 1 的标记名 '\1'。

    您想要的输出将在Group 2.

    注意,这不适用于嵌套标签。

    【讨论】:

      猜你喜欢
      • 2016-04-29
      • 2023-01-07
      • 1970-01-01
      • 2022-07-29
      • 1970-01-01
      • 2013-09-05
      • 2012-04-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多