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;
}
↑这是我的代码
由于使用了上万次正则,导致速度变慢,能不能使用一次正则就把全部符合条件的放到是个数组里,代码怎么写?
https://www.cnblogs.com/yusenwu/p/5296835.html
用Regex Iterator
去掉cout << retResult[1] << endl;输出
不过,正则表达式本身就是很慢的,如果你已经优化,那么耗时还是在解析上。
如果你针对特定的模式匹配而不是通用,可以自己写匹配代码,用kmp+auto machine,比起通用的regular expression parser,专用的代码可以更快
顶一下楼层,来赐教赐教!!!