Parce que regex est gourmand par défaut. C'est à dire. les expressions .*
ou .+
essayez de prendre autant de caractères que possible. Donc <.+>
s'étendra du premier <
jusqu'au dernier >
. Rendez-le paresseux en utilisant l'opérateur paresseux ?
:
regexp_replace(teststring, '<.+?>')
ou
regexp_replace(teststring, '<.*?>')
Maintenant, la recherche de >
s'arrêtera au premier >
rencontré.
Notez que .
inclut >
ainsi, donc la variante gourmande (sans ?
) avale tous les >
mais le dernier.