Protože regulární výraz je ve výchozím nastavení chamtivý. Tj. výrazy .* nebo .+ pokusit se vzít co nejvíce postav. Proto <.+> bude trvat od prvního < na poslední > . Udělejte to líné pomocí líného operátoru ? :
regexp_replace(teststring, '<.+?>')
nebo
regexp_replace(teststring, '<.*?>')
Nyní vyhledejte > se zastaví na prvním > došlo.
Všimněte si, že . zahrnuje > také tedy chamtivá varianta (bez ? ) spolkne všechny > ale poslední.