我使用正則表達式從html頁面中的divs之間檢索字符串,但是我遇到了內存不足錯誤。我正在使用Visual Studio 2012和C++。C++ RegEx內存不足
正則表達式是"class=\"ListingDescription\">((.*|\r|\n)*?(?=</div>))"
,regxbuddy認爲它在242步中完成了它(它比原來的約5000多好)。該網站我想放棄的信息從爲http://www.trademe.co.nz/Browse/Listing.aspx?id=557211466
下面是代碼:
typedef match_results<const char*> cmatch;
tr1::cmatch results;
try {
tr1::regex regx("class=\"ListingDescription\">((.*|\\r|\\n)*?(?=</div>))");
tr1::regex_search(data.c_str(), results, regx);
cout << result[1];
}
catch (const std::regex_error& e) {
std::cout << "regex_error caught: " << e.what() << '\n';
if (e.code() == std::regex_constants::error_brack) {
std::cout << "The code was error_brack\n";
}
}
這是我的錯誤:
regex_error caught: regex_error(error_stack): There was insufficient memory to d
etermine whether the regular expression could match the specified character sequ
ence.
使用RegexBuddy正常工作等做一些在線正則表達式工具只是不是我的代碼:(請幫助
如果您使用VS2012爲什麼不使用'的'經常代替''可能 –
Rapptz
2013-02-10 11:29:26
對沒有你的問題是有用的,但是'(* | \\ [R | \\ n)'與'。*'有什麼不同? – mah 2013-02-10 11:48:34
@mah是的,'.'匹配除換行符之外的所有字符。 – 2013-02-10 12:01:29