Да, я уже написал пару итераторов по большим файлам.
Один — ищет конкретный текст (замыкающий тег) и дочитывает в буфер пока не найдёт (дальше можно парсить блок и повторять заново), другой — гусеничкой гуляет: смотрит, есть ли в блоке сопоставление регулярке, если нет — отходит немного назад и захватывает новый кусок, снова проверяя нет ли сопоставления. На случай если прочитавшийся кусок с половиной регулярки (тут нет временного буфера, сделано для економии памяти и ускорения парсинга). И кушает оно, в зависимости от размера текста/регулярки максимум метров тридцать, при дефолтных настройках. Но для ускорения можно и по паре сотен гигов хапать.