Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 为什么这个正则表达式在Python中不匹配?_Regex_Python 3.x - Fatal编程技术网

Regex 为什么这个正则表达式在Python中不匹配?

Regex 为什么这个正则表达式在Python中不匹配?,regex,python-3.x,Regex,Python 3.x,我有正则表达式 (GET|POST) (/api/\w+) (HTTP/1\.\d)(?:.*\\r\\n\\r\\n)(\S+)? 我正试图将其与HTTP GET和HTTP POST请求进行匹配。我正在使用这个有用的网站来格式化我的正则表达式,根据它,正则表达式应该匹配我正在寻找的两种格式 但是,当我输入Python本身并调用re.split()(在字符串输入上)时,它不会分割POST请求。它只拆分GET请求。我认为这与regex101解析\r\n(CRLF)的方式与Python的解析方式

我有正则表达式

(GET|POST) (/api/\w+) (HTTP/1\.\d)(?:.*\\r\\n\\r\\n)(\S+)?
我正试图将其与HTTP GET和HTTP POST请求进行匹配。我正在使用这个有用的网站来格式化我的正则表达式,根据它,正则表达式应该匹配我正在寻找的两种格式

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


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

您的代码在
HTTP/1.0
之后缺少了一个额外的
\r\n
。这将有助于:

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

好的,我现在明白了。抢手货但是我确实需要让POST格式在
HTTP/1.0
之后只有一个
\r\n
。那么,有没有一种方法可以使用一个正则表达式来处理
\r\n\
\r\n\r\n
?我现在正在摆弄正则表达式,但运气不太好。@WaterGuy
(\r\n)+
将匹配一个或多个
\r\n
(\r\n){1,2}
只匹配1或2occurrences@Nick我试了一下,但没有成功。我尝试了
(?:\\r\\n)+
,但它只匹配了一个\r\n.@WaterGuy它在你的regex101页面上为我工作:@WaterGuy将它记到机器中的幽灵。很高兴听到它起作用了。