html - 正则表达式模式从 HTML 标签中抓取数据
问题描述
匹配此模式的正则表达式模式将是什么,其中在标题标签内可以有任意数量的属性,例如id
,并且在标题标签内class
可以有零个或多个强标签?我想匹配以下模式:
- 任何 HTML 标头 (h1-h5)
- 任何属性都可以出现在标题标签内。
- 可以存在零个或多个强标签。
<h5 id="some_id"><strong><strong><strong>SOME_TEXT</strong></strong></strong></h5>
解决方案
你可以试试:
match = re.search(r"<(h[1-5])\b(?:[^>]|>[<\s])*>([^<]+)(?:[^<]|<(?!/\1))*</\1>",
subject, re.IGNORECASE)
if match:
result = match.group(2)
else:
result = ""
我将在几秒钟内添加一个 regex101 来展示它是如何工作的。
这是:https ://regex101.com/r/du8PCn/1 (匹配的是第 2 组)。
编辑:我对 Python 了解不多,但我相信如果你匹配一个带有多个标题的 html 字符串(而不是),你将需要使用re.findall
或更高版本。re.finditer
re.search
推荐阅读
- azure - Azure 管道模板示例
- r - 如何在 Rtweet 的 search_fullarchive 查询中包含语言和其他过滤器?
- sql - 有没有办法在 MS SQL 中没有 ORDER BY 子句的有序输出
- html - 在 Angular 运行时动态调用时,toLocaleDateString 不是函数
- vue.js - 从服务器检索用户设置
- php - 无法在 Linux 服务器上使用 PHP 写入文件
- office-js - 如何使用 getTextRanges 分隔段落
- r - .r 文件扩展名的大小限制是多少?
- sql - 根据多列分组查找最近更新的行
- python - 在函数调用上使用 tqdm 进度条