Переполнение стека в boost::regex_match
От: igna Россия  
Дата: 18.04.08 09:36
Оценка:
Проверяю строку состоящую из 10000 a и одного b на соответствие регулярному выражению a*b , regex_match возвращает true. Заменяю выражение на (a)*b , в regex_match бросает исключение runtime_error. Смотрю, оказывается происходит переполнение стека. Замена (a)*b на (?:a)*b не помогает. Как же быть, если нужно записать что-то вроде (a|c)*b ?

int main()
{
    int const n = 10000;
    char s[n];
    std::fill_n(s, n, 'a');
    s[n] = 'b';
    s[n + 1] = '\0';

    boost::regex e("(?:a)*b");
    bool b = boost::regex_match(s, e);

    return 0;
}



22.04.08 02:12: Перенесено модератором из 'C/C++' — Кодт
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.