在HTML中匹配P标签内的文本
我想用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标签,而其他的都有。我哪里做错了?我该怎么修正呢?谢谢!
2 个回答
3
原来答案是要加上 re.S 这个标志,这样“.”这个符号就可以匹配换行符了。
pattern = re.compile('<p class=\"thisClass\">(.*?)<\/p>', re.S)
这样做效果很好。
5
我觉得这个问题不是因为<br/>
标签导致的,而是因为段落被分成了多行。你可以使用DOTALL模式来解决这个问题:
pattern = re.compile('<p class=\"thisClass\">(.*?)<\/p>', re.DOTALL)