Slavenin999
@Slavenin999
программист php/erlang/elixir/js

Как составить регулярное выражение в с++ для распознавания «сырого» POST запроса?

Доброго времени суток, %habrauser%!

Продолжаю разбираться с с++.
Стоит задача разобрать "сырой" POST запрос вида:

--------------------------a83ff083a93d5629
Content-Disposition: form-data; name="test"

123456
--------------------------a83ff083a93d5629
Content-Disposition: form-data; name="test2"

33333
--------------------------a83ff083a93d5629
Content-Disposition: form-data; name="test3"

777
--------------------------a83ff083a93d5629--


пытаюсь решить её следующим образом (используется boost/regex.hpp):

void match_parts_req(string * response)
{
	regex expression("\"([a-zA-Z0-9_]+)\"\r\n\r\n(.*[^\r\n])\r\n");

	sregex_token_iterator iter(response->begin(), response->end(), expression, 0);
    sregex_token_iterator end;

	cout<<"\nstart matches\n";
    for( ; iter != end; ++iter ) {
        cout<<"value of: \n";
		cout<<*iter<<'\n';
    }

	cout<<"end matches\n";
}


Но, похоже, что в с++ регулярные выражения работают как-то "по-особенному", так как такая регулярка здесь работает вполне корректно, а вот в программе выводится вся строка начиная с "test" и до конца
  • Вопрос задан
  • 2435 просмотров
Решения вопроса 1
Slavenin999
@Slavenin999 Автор вопроса
программист php/erlang/elixir/js
решил с помощью переписанной регулярки

regex expression("\"([^\r\n]+)\"\r\n\r\n([^\r\n]+)\r\n");
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы