【发布时间】:2013-06-25 17:10:27
【问题描述】:
我想使用re 模块从字符串中提取所有 html 节点,包括它们的所有属性。但是,我希望每个 attr 都是一个组,这意味着我可以使用 matchobj.group() 来获取它们。节点中的属性数量是灵活的。这就是我感到困惑的地方。我不知道如何编写这样的正则表达式。我已经尝试过</?(\w+)(\s\w+[^>]*?)*/?>',但是对于像<a href='aaa' style='bbb'> 这样的节点,我只能使用[('a'), ('style="bbb")] 获得两个组。
我知道有一些很好的 HTML 解析器。但实际上我不会提取 attrs 的值。我需要修改原始字符串。
【问题讨论】:
-
考虑使用 HTML 解析器而不是正则表达式。 crummy.com/software/BeautifulSoup
-
正常情况下第一个匹配被第二个覆盖。
-
为什么需要修改原始字符串?