获得以下代码
title = re.findall('<title>(.*?)</title>',content)
按预期工作,但在面对以下结构时不会返回任何内容:
<title>
xxxxxxx
</title>
即。当<title>.
有什么建议吗?
答案 0 :(得分:3)
您需要设置re.S
(全部点)标记以使.
匹配换行符:
>>> import re
>>> content = """
... <title>
...
...
... xxxxxxx
...
...
... </title>
... """
>>> title = re.findall('<title>(.*?)</title>', content, re.S)
>>> title
['\n\n\nxxxxxxx\n\n\n']
>>> title[0].strip()
'xxxxxxx'
>>>
注意:设置dot-all标志的另一种方法是将(?s)
放在Regex模式的开头:
title = re.findall('(?s)<title>(.*?)</title>', content)
答案 1 :(得分:1)
你能试试这个re.S
吗?re.findall('<title>(.*?)</title>', content, re.S)
答案 2 :(得分:1)