黑菜菌 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,专用的代码可以更快

    评论

报告相同问题?

悬赏问题

  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序