sub
Pythonの正規表現またはsubn
メソッドに似たものを探しています。
http://docs.python.org/library/re.html
つまり、基本的にはこのようなC / C++APIです。
re.sub(pattern, repl, string, count=0, flags=0)
repl
Pythonの場合と同じように、関数ポインタを配置できる場所。
sub
Pythonの正規表現またはsubn
メソッドに似たものを探しています。
http://docs.python.org/library/re.html
つまり、基本的にはこのようなC / C++APIです。
re.sub(pattern, repl, string, count=0, flags=0)
repl
Pythonの場合と同じように、関数ポインタを配置できる場所。
regex_replaceを見てください
#include <iostream>
#include <regex>
#include <string>
int main()
{
std::string text = "Quick brown fox";
std::regex vowel_re("a|o|e|u|i");
std::cout << std::regex_replace(text, vowel_re, "[$&]") << '\n';
}
出力:
Q[u][i]ck br[o]wn f[o]x
@Vikasは正しいです(少なくとも彼はそう確信しています)、std::regex_replace
あなたが望むことを行うことができますが、彼は実際にそれを行う方法を示していません。を使用するregex_replace
と、正規表現に一致するたびにregex::match
オブジェクトが生成されます。そのオブジェクトのformat
メンバー関数は、渡された置換文字列regex_replace
(および渡されたフラグ) で呼び出されます。
したがって、Python で話しているのと同じ効果を得るには (単に置換テキストを指定するのではなく、置換ごとに関数を呼び出す) 、メンバー関数regex::match
をオーバーロードするオブジェクトを作成する必要があります。これが呼び出される関数です。 format
. デフォルトでは、標準regex::match::format
は ECMAScript/Javascript 置換またはsed
置換のいずれかを行うことができます (フラグを渡して、どちらを好むかを知らせることができます)。
ただし、実際にこれを行うことはかなり珍しいように思われることを付け加えておく必要があります。標準では、それが可能であることはかなり明確になっていますが、その方法を示した本を知りません。