Почему это регулярное выражение не совпадает в Python? - PullRequest
1 голос
/ 05 октября 2019

У меня есть регулярное выражение

(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\ внутри регулярного выражения, а не \\r\\n, как я это делал в regex101. И все же это не работает.

Как заставить регулярное выражение работать в Python?

1 Ответ

1 голос
/ 05 октября 2019

Вам просто не хватает дополнительных \r\n после HTTP/1.0. Это будет работать:

'POST /api/gettime HTTP/1.0\r\n\r\nContent-Length: 13\r\n\r\n100000+200000'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...