黑菜菌 2019-03-22 18:58 采纳率: 0%
浏览 482

【C++正则】如何一次将所有符合条件的字符串储存起来?

int main()  
{
    //正则表达式---
    regex AddrReg("RealAddress=\"(.+)\"");
    smatch retResult;
    string OriginalStr = "这里有上万个符合正则条件的字符串";

    string::const_iterator iterStart = OriginalStr.begin();
    string::const_iterator iterEnd = OriginalStr.end();

    //反复使用正则取出字符串,很耗时
    while (regex_search(iterStart, iterEnd, retResult, AddrReg))
    {
        cout << retResult[1] << endl;
        iterStart = retResult[1].second;
    }

    return 0;
}

↑这是我的代码
由于使用了上万次正则,导致速度变慢,能不能使用一次正则就把全部符合条件的放到是个数组里,代码怎么写?

  • 写回答

2条回答 默认 最新

  • threenewbee 2019-03-22 19:18
    关注

    https://www.cnblogs.com/yusenwu/p/5296835.html
    用Regex Iterator
    去掉cout << retResult[1] << endl;输出
    不过,正则表达式本身就是很慢的,如果你已经优化,那么耗时还是在解析上。

    如果你针对特定的模式匹配而不是通用,可以自己写匹配代码,用kmp+auto machine,比起通用的regular expression parser,专用的代码可以更快

    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!