Как правило, вы не можете анализировать HTML с регулярными выражениями, потому что это не обычный язык.
Если вы генерируете строку в определенном месте и знаете, что это просто само значение, тогда это может быть возможным. Однако в этом случае он вряд ли будет чистым, потому что вы не хотите встраивать теги во что-то, что должно быть просто CDATA. Если вы начинаете синтаксический анализ документов, включая теги, в общем случае невозможно написать правильное регулярное выражение, которое будет отражать ваш случай. Если ваш документ использует очень ограниченный синтаксис, он может это сделать, но я бы с осторожностью отнесся к этому, так как сомневаюсь, что кто-нибудь помнит о необходимости соблюдения этих ограничений с учетом будущего рефакторинга.
Лучшее решение состоит в том, чтобы использовать что-то вроде DOM для перебора самого сгенерированного HTML и изменения дерева узлов. В качестве альтернативы, если вы действительно выводите чистый XHTML, вы можете использовать XSLT для выполнения этого перевода.