regex - 为什么这个正则表达式在 Python 中不匹配?
问题描述
我有正则表达式
(GET|POST) (/api/\w+) (HTTP/1\.\d)(?:.*\\r\\n\\r\\n)(\S+)?
我试图匹配 HTTP GET 和 HTTP POST 请求。我正在使用有用的regex101.com网站来格式化我的正则表达式,根据它,正则表达式应该匹配我正在寻找的两种格式。
但是,当我输入 Python 本身并调用re.split()
, (在输入字符串时),它不会拆分 POST 请求。它只拆分 GET 请求。我认为这与 regex101 解析\r\n
(CRLF) 的方式与 Python 的解析方式有关,所以我仔细检查并确保在 Python 中,我实际上在\r\n\
regex 中输入,而不是\\r\\n
regex101 中的。然而它仍然不起作用。
如何让正则表达式在 Python 中工作?
解决方案
你只是错过了一个额外的\r\n
after HTTP/1.0
。这将起作用:
'POST /api/gettime HTTP/1.0\r\n\r\nContent-Length: 13\r\n\r\n100000+200000'
推荐阅读
- google-chrome - 在浏览许多网站时获取 cookie
- database - Postgres plpgsql 使用 COPY ( TO || FROM) 提高 CTE 中 INSERT INTO... 语句的速度
- python - Python 列表参考和只是另一个副本
- css - 自定义滚动条覆盖边缘并一直到菜单
- java - 我的 Eclipse 中有 2 个 JAVA 项目,一个是 maven-testNG,第二个是 maven-cucumber。在黄瓜项目路径中的非法字符
- javascript - 如何在 quasar(vuejs) 中加载 CDN 链接 (js/css)
- python - 在 Python 中生成随机字符
- api - ip-api 不提供代理信息
- python - 在 python 中使用 BS4 创建 stockchecker
- spring - 无法调用“org.springframework.cloud.netflix.eureka.CloudEurekaClient.getApplications()”