正規表現を使用してhtmlページのdiv間から文字列を取得していますが、メモリ不足エラーが発生しました。VisualStudio2012とC++を使用しています。
正規表現は"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は正常に動作するので、私のコードだけでなく、いくつかのオンライン正規表現ツールも実行します:(助けてください