Weil Regex standardmäßig gierig ist. D.h. die Ausdrücke .* oder .+ Versuchen Sie, so viele Zeichen wie möglich zu nehmen. Also <.+> erstreckt sich vom ersten < bis zum letzten > . Machen Sie es faul, indem Sie den faulen Operator ? verwenden :
regexp_replace(teststring, '<.+?>')
oder
regexp_replace(teststring, '<.*?>')
Jetzt die Suche nach > stoppt beim ersten > angetroffen.
Beachten Sie, dass . enthält > auch, also die Greedy-Variante (ohne ? ) schluckt den gesamten > aber das letzte.