我正在尝试使用正则表达式制作一个简单的基于Python的HTML解析器。我的问题在于如何使我的正则表达式搜索查询找到所有可能的匹配项,然后将它们存储在一个元组中。
假设我有一个页面,其中包含存储在变量HTMLtext
中的以下内容:
<ul>
<li class="active"><b><a href="/blog/home">Back to the index</a></b></li>
<li><b><a href="/blog/about">About Me!</a></b></li>
<li><b><a href="/blog/music">Audio Production</a></b></li>
<li><b><a href="/blog/photos">Gallery</a></b></li>
<li><b><a href="/blog/stuff">Misc</a></b></li>
<li><b><a href="/blog/contact">Shoot me an email</a></b></li>
</ul>
我希望对这段文本进行正则表达式搜索,并返回一个包含每个链接最后一个URL目录的元组。因此,我想要返回类似于以下内容:
pages = ["home", "about", "music", "photos", "stuff", "contact"]
到目前为止,我能使用正则表达式搜索一个结果:
pages = [re.compile('<a href="/blog/(.*)">').search(HTMLtext).group(1)]
运行这个表达式会使pages = ['home']
。
我该如何让正则表达式搜索整个文本,将匹配的文本附加到此元组中?
(注:我知道我可能不应该使用正则表达式来解析HTML。但是我仍然想知道如何做到这一点。)
.*
消耗了所有符号直到行尾,然后回溯以匹配以下的"
,这会减慢解析速度。我会在我的答案中更正这个模式。 - ovgolovin