regex_replace的fmt中包含数字时怎么写?

kingyo 2016-04-16 06:58:33
我要找到文本中所有Colour文字,然后将其中的u替换为数字1,
std::regex reg("(Colo)(u)(r)");
std::string s="Colour, colours, color, colourize";
s=regex_replace(s,reg,"$11$3");
本来我的意思是,使用$1, 1, $3组成Colo1r,但是很明显,regex不是这么理解的,它理解为$11, $3;
有什么办法让他理解为$1, 1, $3?
我实际使用比这个要复杂,这里我自己创造了一个类似的例子。
就是fmt中$n后面如果跟数字m, 就会被解析成$nm,但是我想让他被解析成$n, m
...全文
136 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2016-04-19
  • 打赏
  • 举报
回复
正则表达式速查 正则表达式举例 正则表达式学习 (4页A4纸)http://download.csdn.net/detail/zhao4zhong1/1808549
#include <iostream>
#include <string>
#include <regex>
using namespace std;
int main() {
    string s("Colour, colours, color, colourize");
    regex reg("(Colo)(u)(r)");
    string t=regex_replace(s,reg,string("$1\\x31$3"));
    cout << t << endl;
    regex reg1("\\\\x31");
    cout << regex_replace(t,reg1,string("1")) << endl;
    return 0;
}
//Colo\x31r, colours, color, colourize
//Colo1r, colours, color, colourize
//
kingyo 2016-04-19
  • 打赏
  • 举报
回复
引用 2 楼 zhao4zhong1 的回复:
提醒:正则表达式不是万能的;有限状态自动机是万能的。 参考《编译原理》中的词法分析和有限状态自动机。
如果用flex之类的词法分析,太复杂了,就需要一个简单的替换。
kingyo 2016-04-19
  • 打赏
  • 举报
回复
引用 1 楼 studyCBC 的回复:
“1$1$3”不行吗?
不行,这样就成了1Color,不是我要的结果Colo1r
赵4老师 2016-04-19
  • 打赏
  • 举报
回复
欢迎6楼高手莅临指导:http://bbs.csdn.net/topics/391936715
赵4老师 2016-04-19
  • 打赏
  • 举报
回复
引用 6 楼 hooked 的回复:
s=regex_replace(s,reg,"$011$3");
亲测有效!高,实在是高!!
#include <iostream>
#include <string>
#include <regex>
using namespace std;
int main() {
    string s("Colour, colours, color, colourize");
    regex reg("(Colo)(u)(r)");
    string t=regex_replace(s,reg,string("$011$3"));
    cout << t << endl;
    return 0;
}
//Colo1r, colours, color, colourize
//
hooked 2016-04-19
  • 打赏
  • 举报
回复
s=regex_replace(s,reg,"$011$3");
赵4老师 2016-04-18
  • 打赏
  • 举报
回复
提醒:正则表达式不是万能的;有限状态自动机是万能的。 参考《编译原理》中的词法分析和有限状态自动机。
七擒关羽 2016-04-18
  • 打赏
  • 举报
回复
“1$1$3”不行吗?

64,282

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧