Skip to main content
 首页 » 编程设计

主机 header 的 Python 正则表达式

2025年05月04日27xiaohuochai

给定这个字符串:

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

请您参考如下方法:

你可以使用这个正则表达式来匹配

>>> 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提到,使用 ^ 匹配字符串的开头也是一个更好的选择,因为可能有名称为 Host 的 Header 字段。因此,最终的正则表达式类似于 re.search(r"^Host: (.+)\r\n",a,re.M).group(1)。