【问题标题】:Matching text within P tags in HTML匹配 HTML 中 P 标记内的文本
【发布时间】:2010-10-29 17:41:55
【问题描述】:

我想使用 python 正则表达式匹配 html 中每个段落中的内容。这些段落中总是有 BR 标记,如下所示:

<p class="thisClass">this is nice <br /><br /> isn't it?</p>

我目前正在使用这种模式:

pattern = re.compile('<p class=\"thisClass\">(.*?)<\/p>')

然后我正在使用:

pattern.findall(html)

查找所有匹配项。但是,它只匹配我拥有的 28 个段落中的两个,看起来那是因为这两个段落中没有 BR 标签,而其余的则有。我究竟做错了什么?我能做些什么来修复它?谢谢!

【问题讨论】:

    标签: python html regex


    【解决方案1】:

    我不认为它失败是因为&lt;br/&gt;,而是因为该段落分布在多行中。使用DOTALL 模式来解决这个问题:

    pattern = re.compile('<p class=\"thisClass\">(.*?)<\/p>', re.DOTALL)
    

    【讨论】:

    【解决方案2】:

    事实证明,答案是将 re.S 作为允许“。”的标志。字符也匹配换行符。

    pattern = re.compile('<p class=\"thisClass\">(.*?)<\/p>', re.S)
    

    这很好用。

    【讨论】:

    • 这是 DOTALL 模式的快捷方式
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-26
    • 1970-01-01
    • 1970-01-01
    • 2010-09-06
    • 1970-01-01
    • 2019-07-09
    相关资源
    最近更新 更多