一个相当简单的正则表达式提取让我很困惑。在SO上找不到类似的问题,如果存在的话,很高兴能被指出来。给定以下HTML:
Title One
Title Two
(在一个较大的文档中-摘要很可能跨越多行)
如何构造一个正则表达式来查找a标记中的文本,即H1后面的第一个p中的文本?正则表达式将进入一个循环,这样我就可以传入头,以便检索后面的项。在
]*>([0-9.]+?)显然匹配一个标记中的所有项(这应该很好,因为标记不能被nexted),但是我不能将它们绑定到H1。在
.+Title One.+]*>([0-9.]+?)
失败。在我曾试着用“回头看”这样说:
(?<=Title One.+)]*>([0-9.]+?)
和一些变体,但它只允许固定宽度的匹配(这里不会这样)。在对于上下文,这将使用Python的regex引擎。我知道regex不一定是最好的解决方案,所以使用DOM或其他东西的替代建议也非常感谢:)
更新
为了澄清上述问题,我想收回以下内容:
{"Title One": ["40.5", "31.3"], "Title Two": ["12.1", "82.0"]}
(这并不是说我需要帮助来编写字典,但它确实说明了我如何需要值与标题相关)。在
到目前为止,美妆素看起来是最好的选择。LXML也可能会工作,因为源HTML并不是真正的标签汤-它的结构相当好,至少在我感兴趣的地方是这样。在