寻找类似于 Python 的正则表达式sub
或subn
方法的东西。
http://docs.python.org/library/re.html
所以基本上像这样的C/C++ api
re.sub(pattern, repl, string, count=0, flags=0)
repl
我可以像在 Python中那样放置函数指针。
寻找类似于 Python 的正则表达式sub
或subn
方法的东西。
http://docs.python.org/library/re.html
所以基本上像这样的C/C++ api
re.sub(pattern, repl, string, count=0, flags=0)
repl
我可以像在 Python中那样放置函数指针。
#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
替换(您可以传递一个标志来表示您喜欢的信号)。
但是,我应该补充一点,实际上这样做似乎相当不寻常——尽管标准非常清楚地表明这是可能的,但我不知道有任何关于该主题的书可以演示如何做到这一点。