c++ - `re.sub(pattern, functor, string)` 对于 C++

标签 c++ regex string std

Python 正则表达式有一个有用的特性,即使用函数来确定替换的能力。也就是说,re.sub(pattern, functor, string) 会将匹配结果传递给仿函数,以获得要使用的替换字符串。这比使用'\1'、'\2'来引用子匹配的格式字符串语法灵活得多。

现在,我想在 C++ 中实现相同的功能,但我不确定该怎么做。第一个想法是使用 std::regex_replace,但它没有允许传递仿函数的重载。另一个想法是使用迭代器将文本拆分为类型为 MATCHNOT_MATCH 的标记,但标准正则表达式迭代器似乎只返回一种类型。他们要么跳过所有不匹配项,要么跳过所有匹配项。

有什么办法吗?我更喜欢标准库。

最佳答案

可以使用匹配结果的.prefix()获取字符串中非匹配的前缀部分,使用.suffix()获取非匹配的前缀部分匹配字符串的其余部分。

Demo (改编自 here)。

关于c++ - `re.sub(pattern, functor, string)` 对于 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25945760/

相关文章:

regex - excel中正则表达式的匹配函数?

string - 有没有办法有条件地 `fmt` 一个字符串?

c++ - 自动顶点属性分配是否保证顺序正确?

regex - bash 正则表达式(或测试)奇怪的行为

Java 字符串匹配正则表达式

java - 如何在给定的搜索中加载相应的数据

android - 向布局添加文本?

c++ - 通过作为另一个类的成员函数的友元函数设置值

c++ - boost::shared_mutex vs boost::mutex 用于多线程写入?

c++ - 像素数据在内存中的布局?