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将它记到机器中的幽灵。很高兴听到它起作用了。