Лично я бы не использовал регулярные выражения для этого.Я не знаю, есть ли у вас альтернатива, но если вы можете загрузить фрагмент HTML в какой-то DOM, тогда вы сможете легко найти все теги и дочерние элементы и удалить их.
Я могуне вижу ваших примеров, но если у вас есть особый случай, когда ваш внешний текст всегда находится в начале или конце текста, то что-то вроде этого должно работать:
^(.*?)<.*>(.*?)$
с совпадением первой и второй скобоктекст, который вы хотите.Однако, если у вас может быть
text<b>HTML</b>text<b>HTML</b>text
И, конечно, худшие сценарии многократного вложенного HTML, где вы хотите, чтобы вывод был "texttexttext", тогда регулярные выражения, вероятно, будут очень сложными.