.^$ | () [ ] { } * + ? \
皮肉なことに、あなたはそれが正規表現に挿入できるように、あなたのURLをエスケープするために正規表現を使用することができます。 (全体の表現にマッチするものは何でもSED、エスケープ&
意志出力でフラグboost::format_sed
は、sedのの置換文字列の書式を使用することを指定します。)
const boost::regex esc("[.^$|()\\[\\]{}*+?\\\\]");
const std::string rep("\\\\&");
std::string result = regex_replace(url_to_escape, esc, rep,
boost::match_default | boost::format_sed);
それとものsedの置換文字列に慣れていない場合フォーマットを変更するには、フラグをboost::format_perl
に変更します。おなじみの$&
を使用して、式全体に一致するものを参照できます。
const std::string rep("\\\\$&");
std::string result = regex_replace(url_to_escape, esc, rep,
boost::match_default | boost::format_perl);
正規表現を使って試してみましたが、私はまだかなり無能で、奇妙なことが起こっていました:p私は正規表現についていくつかの本を注文しましたので、私の無知は短命です!その間に、これらの文字をエスケープするために通常の文字列置換を使用することは、私の即時のニーズのために働いた、ありがとう。 – Gerald
エスケープする必要のあるキャラクタの前にバックスラッシュを追加すると思っています。私はしばらくの間ブーストを使用していませんが、保証はありません。 – Amber
それは近くにあった、ちょうどrepの終わりに "&"を加えなければならなかった、そしてそれは働いた。ありがとう。 – Gerald