正则表达式在 HTML 中查找特定标签 [重复]

Posted

技术标签:

【中文标题】正则表达式在 HTML 中查找特定标签 [重复]【英文标题】:Regex to find a specific tag in HTML [duplicate] 【发布时间】:2018-11-10 18:14:24 【问题描述】:

我有一大段 html 我对我一无所知我试图在某个标签中查找和替换某个属性的值。所以我想捕获具有我的匹配属性的整个标签。标签中也可以有任意数量的未知属性。假设我有以下 HTML(都在一行上),其中 xxxx="zzzz" 表示任意数量的未知属性。我只想捕获具有 content="320"

的元标记

我的问题是,我在包含我正在寻找的实际属性的那个之前获取每个元标记。

<meta charset="UTF-8"><meta name="apple-mobile-web-app-capable" xxxx="zzzz" content="yes"><meta name="apple-mobile-web-app-status-bar-style" xxxx="zzzz" content="default"><meta name="mobile-web-app-capable" xxxx="zzzz" content="yes"><meta name="HandheldFriendly" xxxx="zzzz" content="True"><meta name="MobileOptimized" xxxx="zzzz" content="[320]"><meta name="format-detection" xxxx="zzzz" content="telephone=no"><meta name="title" xxxx="zzzz" content="Regex101">

格式化版本作为视觉辅助:

 <meta charset="UTF-8">
      <meta name="apple-mobile-web-app-capable" xxxx="zzzz" content="yes">
      <meta name="apple-mobile-web-app-status-bar-style" xxxx="zzzz" content="default">
      <meta name="mobile-web-app-capable" xxxx="zzzz" content="yes">
      <meta name="HandheldFriendly" xxxx="zzzz" content="True">
      <meta name="MobileOptimized" xxxx="zzzz" content="320">
      <meta name="format-detection" xxxx="zzzz" content="telephone=no">
      <meta name="title" xxxx="zzzz" content="Regex101">

这是我正在使用的正则表达式&lt;meta.*?\s+content\s*=\s*\"\[320]\".*?

示例:http://refiddle.com/refiddles/5b10282175622d3008480000

【问题讨论】:

不要使用 Regex 进行 HTML 解析,使用专门的库,如 HTML Agility Pack RegEx match open tags except XHTML self-contained tags :-) 谢谢,我只是以 HTML 为例,我不是在解析 HTML,而是在解析形成类似的字符串。 【参考方案1】:

试试这个。我在 Online Regex https://regex101.com 中对其进行了测试。

<meta.+content="320">

【讨论】:

【参考方案2】:

贪心 (.*) 存在一个小问题,而且方括号是 RegEx 中的控制字符。如果我理解正确的话,你就快到了。

<meta[^>]*\scontent\s*=\s*"\[320\]"[^>]*>

检索您要求的文字内容content="[320]" 的一个meta 标记。

【讨论】:

感谢这就像一个魅力,我知道这是贪婪/非贪婪的问题!

以上是关于正则表达式在 HTML 中查找特定标签 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

用于查找html标签的正则表达式[重复]

在两个html标签之间查找正则表达式[重复]

正则表达式 - 从 HTML 文件中查找各种字符串 [重复]

除非被特定标签包围,否则替换字符

正则表达式在 html 锚标记内不匹配 [重复]

Python Regex - 在html标签之间查找字符串[重复]