首页 > 解决方案 > 正则表达式模式从 HTML 标签中抓取数据

问题描述

匹配此模式的正则表达式模式将是什么,其中在标题标签内可以有任意数量的属性,例如id,并且在标题标签内class可以有零个或多个强标签?我想匹配以下模式:

  1. 任何 HTML 标头 (h1-h5)
  2. 任何属性都可以出现在标题标签内。
  3. 可以存在零个或多个强标签。
<h5 id="some_id"><strong><strong><strong>SOME_TEXT</strong></strong></strong></h5>

标签: htmlregex

解决方案


你可以试试:

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.finditerre.search


推荐阅读