В вопросе не упоминается, хотите ли вы очистить свой контент на стороне клиента или сервера.
Если это нужно сделать на сервере, пожалуйста, не используйте для этого regex.Зачем?Смотрите этот отличный ответ.Вместо этого используйте HTML-парсер.Например, с помощью HtmlAgiltyPack:
var doc = new HtmlDocument();
doc.LoadHtml(html);
foreach(var node in doc.DocumentNode.SelectNodes("//div|//span|//p"))
if (string.IsNullOrWhiteSpace(node.InnerText.Replace(@"\n", string.Empty)))
node.Remove();
var result = doc.DocumentNode.OuterHtml;
Но на клиенте это можно сделать еще проще (без регулярных выражений), используя jQuery:
var dom = $(html);
dom.find('p,span,div').each(function() {
if ($(this).text().trim() == '')
$(this).remove();
});
var result = dom.wrap('<div>').parent().html();