(или я так думаю) ...Регулярного выражения переполнение вызывает выдаст ошибку сегментации/стек
Я использую подталкивание :: Xpressive как мои регулярные выражения, чтобы разобрать что-то и я получаю Segfault. Я подозреваю, что виновата рекурсия и мое плохое регулярное выражение, потому что gdb показывает более 300 кадров стека. Итак, вот мое (чувствительно к регистру) регулярное выражение в Perl/питон нотации:
begin([^e]+)e((?:[^b]|b(?!egin))+)
, который я ожидал, чтобы соответствовать
beginHEADER HEREeFOLLOWED BY SOME LONG LONG TEXT THAT GOES UNTIL NEXTbegin
с первым прописным текстом (HEADER ЗДЕСЬ) в первая группа и второй заглавный текст во второй группе. Я всегда получаю segfault, если текст, который должен соответствовать группе 2, очень длинный.
Почему это не должно работать?
Я бы сохранил '[^ e] +' в левой части, это, вероятно, будет работать лучше. – Benoit
Спасибо, сейчас работает. Это отталкивающее мышление. – dsign
Кроме того, xpressive работает намного лучше при компиляции в режиме release (может быть, хвостовая рекурсия помогает?). – dsign