yecunsb10049
土成
采纳率83.3%
2015-12-22 13:46 阅读 2.3k

C++使用正则表达式出现错误

我要提取这个:20110604-092737<\INFO :0xb7f2a6d0>

但是代码总是出现如下错误:
图片说明

代码如下:

#include <string>
#include <iostream>
#include <regex>
#include <stdio.h>

int main()
{
    std::string str = "20110604-092737<INFO :0xb7f2a6d0>: Player logout: 忘了爱过谁";
    std::regex rgx("^[\\d\\-\\d\\<\\w\\s{0,1}\\:\\w>]");
    std::smatch result;
    if (std::regex_search(str, result, rgx))
    {
        std::cout << result.str();
    }

}

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

4条回答 默认 最新

  • 已采纳
    qq_27183003 ysuwood 2015-12-22 15:08

    在vc2010下运行通过,这个更简洁:

        std::regex rgx("^\\d*-\\d*<\\w*\\s{0,1}:\\w*>");
    
    
    点赞 2 评论 复制链接分享
  • caozhy 从今以后生命中的每一秒都属于我爱的人 2015-12-22 15:00

    正则就没有写对

     \\d{8}\\-\\d{6}\\<\\\\INFO\\s\\:0x[0-9a-fA-F]{8}\\>
    
    点赞 4 评论 复制链接分享
  • qq_27183003 ysuwood 2015-12-22 14:59
        std::regex rgx("^[\\d]*[-][\\d]*[<][\\w]*[\\s{0,1}][:][\\w]*[>]");
    
    
    点赞 2 评论 复制链接分享
  • qq_27183003 ysuwood 2015-12-22 15:16

    现学现卖,最后就这样了:

        std::regex rgx("\\d*-\\d*<\\w* :\\w*>");
    
    
    点赞 2 评论 复制链接分享

相关推荐