introduction
C++ で正規表現を使うことがあったので、サンプルとして提供します。
下のWebアプリを作った際、MySQLのコマンドを書くときに使用したものです。
MySQL について
軽くMySQLについて説明しておきます。
以下のURLに記されているように文字の中でも特殊文字エスケープシーケンスと呼ばれるものがあります。
「'」や「"」 などの文字ですね。これらをMySQLコマンドに載せたい場合は「'」「"」のように書く必要があります。
C++ で正規表現を使う
regexというライブラリを使います。またC++11の生文字リテラルを使用します。
# include <iostream>
# include <regex>
# include <string>
string sqlText(string text) {
std::regex re(R"("|'|\\)");
const std::string fmt = R"(\$&)";
string formated_text = std::regex_replace(text, re, fmt);
// cout << "ss == " << formated_text << endl;
return formated_text;
}
sqlTextの一行目で正規表現で探したいものを設定します。今回は「'」「"」「\」を探すことにしました。
fmtで何を入れ替えるか明示します。今回はreで探した文字を先頭にバックスラッシュをつけた状態にします。
std::regex_replaceを用いて実際の処理をします。
以上