正则表达式替换捕获,然后数字分隔 我试图用C++中的正则表达式学习,得到了这个代码: std::string s("21\n"); std::regex e("\\b(2)1"); std::cout << std::regex_replace(s, e, "${1}0 first"); std::字符串s(“21\n”); std::regex e(“\\b(2)1”); std::cout

正则表达式替换捕获,然后数字分隔 我试图用C++中的正则表达式学习,得到了这个代码: std::string s("21\n"); std::regex e("\\b(2)1"); std::cout << std::regex_replace(s, e, "${1}0 first"); std::字符串s(“21\n”); std::regex e(“\\b(2)1”); std::cout,c++,regex,C++,Regex,C++不允许使用${1}语法。一般来说,这可能是一个问题,所以有时候你不得不这样做 不过,在这种特殊情况下,您很幸运,因为反向引用标识符最多只有两位数字,所以对于$01: #包括 #包括 #包括 int main() { std::字符串s(“21\n”); std::regex e(“\\b(2)1”); std::coutC++不允许使用${1}语法。一般来说,这可能是一个问题,所以有时必须这样做 不过,在这种特殊情况下,您很幸运,因为反向引用标识符最多只有两位数字,所以对于$01: #包括

C++不允许使用
${1}
语法。一般来说,这可能是一个问题,所以有时候你不得不这样做

不过,在这种特殊情况下,您很幸运,因为反向引用标识符最多只有两位数字,所以对于
$01

#包括
#包括
#包括
int main()
{
std::字符串s(“21\n”);
std::regex e(“\\b(2)1”);

std::coutC++不允许使用
${1}
语法。一般来说,这可能是一个问题,所以有时必须这样做

不过,在这种特殊情况下,您很幸运,因为反向引用标识符最多只有两位数字,所以对于
$01

#包括
#包括
#包括
int main()
{
std::字符串s(“21\n”);
std::regex e(“\\b(2)1”);

std::cout“能给我指出一个有完整纪录片的更好的图书馆吗?”boost有很好的文档,其中大部分适用于std,因为它来自boost。无论如何,请编辑您的问题,包含“能给我指出一个有完整纪录片的更好的图书馆吗?”boost有很好的文档,其中大部分都适用于std,因为它来自boost。无论如何,请编辑您的问题,使其包含$010,谢谢。我会将您的帖子标记为答案。但我担心关于正则表达式的问题会越来越多,因为我无法简单理解编写它的语法。@Aleksandr如果您的问题是关于形成一个有效的模式,在网络上有很多好的资源。如果是关于C++技术的,请再次询问(当然,在查阅参考文献之后)。:你肯定是在问有关
std::regex
的问题!010美元确实是这样,谢谢你。我会把你的帖子标记为答案。但我担心会有越来越多关于regex的问题,因为我不能简单地理解编写它的语法。@Aleksandr如果你的问题是关于形成有效的模式,那么这是一个关于整个网络的好资源。如果是关于C++技术的,请再次问(当然,在查阅参考文献之后):你当然会问关于<代码> STD::ReGEX < /代码>这里!
#include <string>
#include <regex>
#include <iostream>

int main()
{
    std::string s("21\n");
    std::regex e("\\b(2)1");   

    std::cout << std::regex_replace(s, e, "$010 first") << '\n';
}

// Output: 20 first