1

subPythonの正規表現またはsubnメソッドに似たものを探しています。

http://docs.python.org/library/re.html

つまり、基本的にはこのようなC / C++APIです。

re.sub(pattern, repl, string, count=0, flags=0)

replPythonの場合と同じように、関数ポインタを配置できる場所。

4

2 に答える 2

1

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
于 2012-09-29T16:10:45.957 に答える
0

@Vikasは正しいです(少なくとも彼はそう確信しています)、std::regex_replaceあなたが望むことを行うことができますが、彼は実際にそれを行う方法を示していません。を使用するregex_replaceと、正規表現に一致するたびにregex::matchオブジェクトが生成されます。そのオブジェクトのformatメンバー関数は、渡された置換文字列regex_replace(および渡されたフラグ) で呼び出されます。

したがって、Python で話しているのと同じ効果を得るには (単に置換テキストを指定するのではなく、置換ごとに関数を呼び出す) 、メンバー関数regex::matchをオーバーロードするオブジェクトを作成する必要があります。これが呼び出される関数です。 format. デフォルトでは、標準regex::match::formatは ECMAScript/Javascript 置換またはsed置換のいずれかを行うことができます (フラグを渡して、どちらを好むかを知らせることができます)。

ただし、実際にこれを行うことはかなり珍しいように思われることを付け加えておく必要があります。標準では、それが可能であることはかなり明確になっていますが、その方法を示した本を知りません。

于 2012-09-29T16:26:13.817 に答える