Какие есть паттерны или алгоритмы для обработки текста?
Предложу вот такой порядок действий: Лексический анализатор разбивает поток входящих лексем на токены. Далее, набор токенов подается на вход парсеру, который выполняет построение "сырого" DOM-дерева, в котором могут присутствовать невалидные теги и тд. Производится обход сырого DOM-дерева и его нормализация. Изменяем имена тегов на максимально приближенные к ним валидные имена, проставляем пропущенные теги, удаляем запрещенные и т.д. По нормализованному дереву теперь можно делать обход и преобразовывать текст. Преобразовываем готовое дерево в html-документ.
1. Вначале нужно "собрать" корректное/валидное DOM-дерево.
2. Затем, добавить все нужные теги
3. Удалить все запрещённые теги
4. Затем, рекурсивно обойти все ветки DOM-"дерева", выполнив текстовые преобразования.Порядок в общем виде (строго соблюдая последовательность действий!):
Валидация структуры, добавление нужных элементов, удаление запрещённых элементов, модификация "тела" оставшихся элементов.