-std = c++0xでgcc4.6.3を使用しています
std::regexを使用するのは初めてです。そして、私は私の間違いを見ることができません:
- 入力解析されたstd::stringは
GET /favicon.ico HTTP/1.1
、正規表現パターンが。であるときに始まりGET(.*)
ます。 - 結果グループ1は評価されますが、私は
T /favicon.ico HTTP/1.1
もっと次のようなものを期待していました/favicon.ico HTTP/1.1
なぜそれが維持されるのか分かりませんT
か?
これが私のコードです:
static const std::string strRegExp="GET(.*)";
std::string computeRequestedItem(const std::string& strHttpRequest)
{
std::cout << "SEARCHING :" << strRegExp << "in :" << strHttpRequest;
std::string strResult;
std::match_results<std::string::const_iterator> result;
static const std::regex pattern(strRegExp);
bool bValid = std::regex_match(strHttpRequest, result, pattern);
if(!bValid)
{
std::cout << "error" << std::endl;
return strResult;
}
strResult = result[1];
std::cout << "Requested item: " << strResult << std::endl;
return strResult;
}
そしてここに出力があります:
SEARCHING :GET(.*)in :GET /favicon.ico HTTP/1.1
Host: 127.0.0.1:8080
Connection: keep-alive
Accept: */*
User-Agent: Mozilla/5.0 (X11; Linux i686) AppleWebKit/536.11 (KHTML, like Gecko) Ubuntu/12.04 Chromium/20.0.1132.47 Chrome/20.0.1132.47 Safari/536.11
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
-+-+-+-+-+-+-+-+-+-+-+-+-+
Requested item: T /favicon.ico HTTP/1.1
Host: 127.0.0.1:8080
Connection: keep-alive
Accept: */*
User-Agent: Mozilla/5.0 (X11; Linux i686) AppleWebKit/536.11 (KHTML, like Gecko) Ubuntu/12.04 Chromium/20.0.1132.47 Chrome/20.0.1132.47 Safari/536.11
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3