Ponieważ wyrażenie regularne jest domyślnie zachłanne. Tj. wyrażenia .* lub .+ postaraj się wziąć jak najwięcej postaci. Dlatego <.+> będzie rozciągać się od pierwszego < do ostatniego > . Zrób to z lenistwem, używając operatora leniwego ? :
regexp_replace(teststring, '<.+?>')
lub
regexp_replace(teststring, '<.*?>')
Teraz wyszukaj zatrzyma się na pierwszym napotkane.
Zauważ, że . zawiera > także wariant zachłanny (bez ? ) połyka cały ale ostatni.