Тема: Catastrophic Backtracking в регулярному виразі
При написанні невеликого парсеру пошукової системи виникав проблема з регулярним виразом:
Є регулярний вираз для парсинга HTML сторінки:
var pattern = @
<div class="A(.*?)(href=")(?<href>.*?)"(.*?)<div class="B">(?<anchor>.*?)<.*?><div class="C yDYNvb">(?<sniplet>.*?)</div>
при парсінгу сторінки все працює.
Але якщо відбувається зміна дизайну на сторінці, наприклад: <div class="B замінюється на <div class="K , то відбувається Catastrophic backtracking і починає зависати парсер.
Завдання: підкоригувати регулярний вираз так, щоб у випадку зміни дизайну, сторінки не відбувалося повернення Catastrophic backtracking, а парсер просто переставав шукати (Нічого не знайдено або помилка)
Заздалегідь вдячний за допомогу