首页 > 解决方案 > 为什么这个正则表达式在 Python 中不匹配?

问题描述

我有正则表达式

(GET|POST) (/api/\w+) (HTTP/1\.\d)(?:.*\\r\\n\\r\\n)(\S+)?

我试图匹配 HTTP GET 和 HTTP POST 请求。我正在使用有用的regex101.com网站来格式化我的正则表达式,根据它,正则表达式应该匹配我正在寻找的两种格式。

这是我在 regex101.com 上的正则表达式

但是,当我输入 Python 本身并调用re.split(), (在输入字符串时),它不会拆分 POST 请求。它只拆分 GET 请求。我认为这与 regex101 解析\r\n(CRLF) 的方式与 Python 的解析方式有关,所以我仔细检查并确保在 Python 中,我实际上在\r\n\regex 中输入,而不是\\r\\nregex101 中的。然而它仍然不起作用。

如何让正则表达式在 Python 中工作?

标签: regexpython-3.x

解决方案


你只是错过了一个额外的\r\nafter HTTP/1.0。这将起作用:

'POST /api/gettime HTTP/1.0\r\n\r\nContent-Length: 13\r\n\r\n100000+200000'

推荐阅读