这就是我的标题看起来像
header = "GET method P2P-DI/1.0\n" +"Host: "+ host+ "\nOS: " + OS + "\nStatus: 404"
我成功地通过这样做得到了方法:
method = re.search('GET (.*?) P2P-DI/1\.0.*',header).group(1)
我正在尝试检索状态代码'404'。返回无没有组错误
status = re.search('GET .*Status: ([0-9][0-9][0-9]?)',header).group(1)
答案 0 :(得分:1)
你可以试试这个:
import re
status = re.findall('Status: (.*?)$', header)[0]
答案 1 :(得分:0)
本节中的最终元字符是
'.'
它匹配除换行符之外的任何内容,并且还有一个备用模式(re.DOTALL
),它甚至可以匹配换行符。
因此,您只需在参数中指定re.DOTALL
即可修复代码:
status = re.search('GET .*Status: ([0-9][0-9][0-9]?)', header, re.DOTALL).group(1)
print(status) # 404
作为匹配任何字符的替代方法,您可以使用以下任何结构:
[\d\D] # that means 'digit char' or 'non-digit char' => 'any char'
[\w\W] # ...
[\s\S]
对于你的例子,它可能是:
(请注意,[0-9]
相当于\d
)
status = re.search('GET [\s\S]*Status: (\d\d\d?)', header).group(1)
此外,对于问题中给出的实例,仅使用:
就足够了status = re.search('Status: (\d+)', header).group(1)