Общее решение этой проблемы - нетривиальная задача для решения.
Чтобы выразить это в контексте, большая часть успеха Google в области поиска связана с их способностью автоматически распознавать некое семантическое значение из произвольных веб-страниц, а именно выяснять, где находится "контент".
Одна идея, которая приходит на ум, заключается в том, что если вы можете сканировать много страниц с одного сайта, вы сможете определить шаблоны. Разметка меню будет практически одинаковой на всех страницах. Если вы как-то обнуляете это (и это нужно будет довольно «нечетко»), то останется контент.
Следующим шагом будет определение текста и границ. В идеале это были бы некоторые абзацы HTML, но большую часть времени вам не повезет.
Лучшим подходом может быть поиск RSS-каналов для сайта и получение контента таким образом, поскольку он будет урезан как есть. Игнорируйте любой контент AdSense (или аналогичный), и вы сможете получить текст.
Да, и просто выкиньте для этого свой код регулярного выражения. Для этого требуется HTML-парсер абсолютно без вопросов.