鉴于此字符串:
GET /dsadda HTTP/1.1\r\nUser-Agent: curl/7.26.0\r\nHost: www.youtube.com\r\nAccept: */*\r\n\r\n
如何在Host:
和\r\n
之间的Python正则表达式组中获取所有内容?
在此示例中,我希望re.match.group(1)
返回www.youtube.com
答案 0 :(得分:5)
您可以使用此正则表达式匹配
>>> a = 'GET /dsadda HTTP/1.1\r\nUser-Agent: curl/7.26.0\r\nHost: www.youtube.com\r\nAccept: */*\r\n\r\n'
>>> import re
>>> re.search(r"Host: (.+)\r\n",a).group(1)
'www.youtube.com'
小注释 - 最好使用re.MULTILINE
标志作为输入字符串包含\n
,尽管在这种特殊情况下不需要它。
另外,正如Antti Haapala所提到的,使用^
来匹配字符串的开头也是一个更好的选择,因为可能有名为{{1}的标题字段}。因此,最终的正则表达式将类似于Host
。
答案 1 :(得分:1)
使用积极的外观和积极向前看
>>> import re
>>> a = 'GET /dsadda HTTP/1.1\r\nUser-Agent: curl/7.26.0\r\nHost: www.youtube.com\r\nAccept: */*\r\n\r\n'
>>> re.search(r"(?<=Host: )(\S+)(?=\r\n)", a).group(1)
'www.youtube.com'