c++ 11 正则表达式 找不到匹配的字符串

futurepi 2014-02-18 12:15:31
vs2010 用c++ 11的正则 匹配某个字符串, 找不到匹配项, 换成另一个同格式字符串可以匹配到, 不知道是不是我正则表达式写错了, 求指点
直接贴代码


szPattern = _T("(\\d{1,3}\\.){3}\\d{1,3}:\\d{1,6}");
regex rgObj(szPattern);
smatch mResult;
szSrc = _T("27.151.127.13:8880"); //换成 27.46.21.144:9999, 可以匹配到
tstring strSrc(szSrc);
bool bRet = regex_search(strSrc, mResult, rgObj
, regex_constants::match_not_null
);
if (bRet)
{
strMatch = mResult.str();
}
...全文
417 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
futurepi 2014-02-20
  • 打赏
  • 举报
回复
测试后, 确定了 这正则在2010有bug, vs2013 可以得出正确的结果, 感谢回复
futurepi 2014-02-18
  • 打赏
  • 举报
回复
引用 1 楼 zhao4zhong1 的回复:
szPattern = _T("(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3}):(\\d{1,6})");
试试看。
感谢回复, 这样分开写是可以的, 但大部分情况采用数量匹配会更合适 也更容易维护, 想知道说这是我代码写的问题还是 c++ 11 正则的bug?
赵4老师 2014-02-18
  • 打赏
  • 举报
回复
szPattern = _T("(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3}):(\\d{1,6})");
试试看。
futurepi 2014-02-18
  • 打赏
  • 举报
回复
引用 3 楼 sduxiaoxiang 的回复:
vs2013上测试你的代码正常查询
给了我点希望! 手头上没有vs2013版本, 不知是否有vs2010 也测试下, 看是否为2010的bug, 非常感谢
sduxiaoxiang 2014-02-18
  • 打赏
  • 举报
回复
vs2013上测试你的代码正常查询

64,654

社区成员

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

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