正则表达式在 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">
这是我正在使用的正则表达式<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 中查找特定标签 [重复]的主要内容,如果未能解决你的问题,请参考以下文章