正则表达式找不到 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 +
我有一个 ('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 +