「。」と一致する クラスとの文字列で、std::tr1::regex
奇妙な回避策を使用するようになります。
「\\\\」を確認する必要があるのはなぜですか。それ以外の "\\。"?
regex(".") // Matches everything (but "\n") as expected.
regex("\\.") // Matches everything (but "\n").
regex("\\\\.") // Matches only ".".
誰かが私に理由を説明できますか?boost::regex
この構文を必要としないクラスを使用してコードを記述していたので、本当に気になります。
編集:申し訳ありませんが、regex("\\\\.")
何にも一致しないようです。
Edit2:いくつかのコード
void parser::lex(regex& token)
{
// Skipping whitespaces
{
regex ws("\\s*");
sregex_token_iterator wit(source.begin() + pos, source.end(), ws, regex_constants::match_default), wend;
if(wit != wend)
pos += (*wit).length();
}
sregex_token_iterator it(source.begin() + pos, source.end(), token, regex_constants::match_default), end;
if (it != end)
temp = *it;
else
temp = "";
}