正则表达式如何匹配生成这样的字串

lurel 2018-09-26 05:42:49
原字串:\Device\Harddisk1\DP(1)0-0+3\BOOTEX.LOG

std::string strDosPath = {"\\Device\\Harddisk1\\DP(1)0-0+3\\BOOTEX.LOG"};

经过正则表达式后匹配生成字串:
\Device\Harddisk1\DP(1)0-0+3
...全文
294 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
www_adintr_com 2018-09-26
  • 打赏
  • 举报
回复

	std::string strDosPath = { "\\Device\\Harddisk1\\DP(1)0-0+3\\BOOTEX.LOG" };
	std::regex re(R"(((\\[^\\]*){3})\\.*)");

	std::cmatch m;
	std::regex_match(strDosPath.c_str(), m, re);
	std::cout << m[1].str() << std::endl;
lurel 2018-09-26
  • 打赏
  • 举报
回复
不是那样的,后面的"\"不固定是多少个,所以只能从前面开始匹配,所以应该是是第四个"\"之前所有的内容。
想学习一下正则,但是确实这个不太会写。正常std::string截断的这种方法是可以做的,但不太想用。
@风轻云淡_ 2018-09-26
  • 打赏
  • 举报
回复
你是想截取除掉文件名的所有部分吗,直接判断最后一个符号 '\' 位置,截取前面全部,还是我理解错了,感觉你这没必要用正则匹配。。

64,643

社区成员

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

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