求一替换字符串的正则表达式实现方式

yyfzy 2017-02-27 04:51:32
求教一正则表达式的问题!

我要实现一个文本文件内容搜索和替换的功能,比如文本内容如下:
user_pref("moa.partnerbookmark.tempfixversion", 411552);
user_pref("network.cookie.prefsMigrated", true);
user_pref("network.predictor.cleaned-up", true);
user_pref("network.websocket.allowInsecureFromHTTPS", false);
user_pref("pdfjs.migrationVersion", 2);
user_pref("pdfjs.previousHandler.alwaysAskBeforeHandling", true);
user_pref("pdfjs.previousHandler.preferredAction", 4);
user_pref("places.database.lastMaintenance", 1487570829);

我要将其中的行:
user_pref("network.websocket.allowInsecureFromHTTPS", false);
替换成
user_pref("network.websocket.allowInsecureFromHTTPS", true);

如果原文中该行不存在,则自动添加;如果原文中搬来就存在“user_pref("network.websocket.allowInsecureFromHTTPS", true);”则不做任何处理!

请教如果使用正则表达式完成以上功能?假设我文本文件内容已经读入到变量:
std::string content;

最好使用std::regex以及相关模板库实现。
谢谢!
...全文
292 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zilaishuichina 2017-03-06
  • 打赏
  • 举报
回复
正则表达式 只有查找/替换的功能,没有添加的功能,添加只能另外代码实现 替换就是regex_replace
赵4老师 2017-03-06
  • 打赏
  • 举报
回复
提醒:正则表达式不是万能的。 有限状态自动机是万能的。 参考《编译原理》中的词法分析和有限状态自动机。
twintiger 2017-03-05
  • 打赏
  • 举报
回复
你将上面的shell命名成chk, chmod +x chk. 用法是chk 输入文件名 > 输出文件名
twintiger 2017-03-05
  • 打赏
  • 举报
回复
用shell很方便 #!/bin/sh found=0 while read LINE do keyword=$(echo $LINE|awk 'BEGIN {FS="[\",)]"}END {print $2}') if [ "$keyword"x = "network.websocket.allowInsecureFromHTTPS"x ] then echo $LINE|sed -e 's/false/true/g' found=1 else echo $LINE fi done <$1 if [ "$found" = "0" ] then echo "user_pref(\"network.websocket.allowInsecureFromHTTPS\", true);" fi
yyfzy 2017-02-28
  • 打赏
  • 举报
回复
有没有可以指点一下的兄台?

65,186

社区成员

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

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