我使用std::regex来匹配字符串。
我对regex的定义是:
regex reg("(-?\\d+,?){2,}", regex::icase)测试字符串是:
5,3240,7290,11340,-3240,-7290,-11340我使用了regex_match()的性病功能。下面是我得到的错误。
regex_error(error_complexity):试图与正则表达式匹配的复杂性超过了预先设置的级别。
我怎样才能解决这个问题?我的编译器是VS2013。
发布于 2016-10-18 09:17:59
您可以将,?-containing组“展开”成一个更线性的模式,以降低复杂性-- ",?-?\\d+(?:,-?\\d+)+"。
请参阅C++演示
#include <iostream>
#include <regex>
using namespace std;
int main() {
regex reg(",?-?\\d+(?:,-?\\d+)+");
string s("5,3240,7290,11340,-3240,-7290,-11340");
if (regex_match(s, reg)) {
std::cout << "Matched!";
}
return 0;
}现在,模式匹配:
,? -一个可选的逗号-? -一个可选的连字符\\d+ -1或更多位数(?:,-?\\d+)+ -1或更多匹配的序列, -逗号-?\\d+ -见上文。
https://stackoverflow.com/questions/40104030
复制相似问题