正则表达式找不到 http header

regex not finding http header

我有一个 ('stolen':) Python 代码,它使用正则表达式解析所有 HTTP headers。

是这样的:

parser = re.compile(r'\s*(?P<key>.+\S)\s*:\s+(?P<value>.+\S)\s*')
header_list = [(key, value) for key, value in parser.findall(http_headers)] 

通常这很好用,但未找到以下 header:

Access-Control-Allow-Origin: *

我认为它可能与星号有关,但我不确定。 我认为正则表达式部分:

P<value>.+\S

用于匹配和分组。任何字符 + 一次或多次后跟 \S any non-whitespace。星号不是其中的一部分吗?

有什么想法吗?

这里的问题其实很简单。最后的 .+ 需要任何字符,然后是 \S 另一个字符。 tl;dr:它只匹配正则表达式后的 2 个或更多字符。

改为使用 * 查找 0 个或更多字符(加上 \S):

\s*(?P<key>.+\S)\s*:\s+(?P<value>.*\S)\s*
#                                 ^ * instead of +