Я использую регулярное выражение для извлечения строки из divs на html-странице, однако я столкнулся с ошибкой вне памяти. Я использую Visual Studio 2012 и C++.C++ RegEx out of memory
Выражение регулярного выражения "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 отлично работает и поэтому сходить в Интернете инструменты regex просто не мой код :(Пожалуйста, помогите
Если вы используете VS2012 почему бы не использовать регулярные '' вместо '' –
Rapptz
Вероятно, не полезно к вашей проблеме, но '(* |. \\ г | \\ n) 'любой, отличный от'. * '? – mah
@mah Да, '.' соответствует всем символам, кроме символов новой строки. –