Omdat regex standaard hebzuchtig is. D.w.z. de uitdrukkingen .*
of .+
probeer zoveel mogelijk karakters te nemen. Daarom <.+>
zal overspannen vanaf de eerste <
tot de laatste >
. Maak het lui met de luie operator ?
:
regexp_replace(teststring, '<.+?>')
of
regexp_replace(teststring, '<.*?>')
Nu de zoektocht naar >
stopt bij de eerste >
tegengekomen.
Merk op dat .
bevat >
ook, dus de hebzuchtige variant (zonder ?
) slikt alle >
in maar de laatste.