Последовательность решения
Обычно начинают одновременно производить все 6 шагов что вызывает серьезные проблемы при отладке. Я предлагаю действовать постепенно. Шаг за шагом.
Приведу решение сразу:
#<(p|li)\s+[^>]*?class\s*=\s*(['"])content\2[^>]*>((?:(?!</\1>).)*)</\1>#is
Согласитесь, выглядит оно почище «китайской грамоты». Тем не менее, следуя описанию, Вы увидите, что всё не так уж и сложно.
Итак, начнём: