in reply to Regular expression seems to be greedy

OK, first of all, what are those slashes doing before the < and > signs? They're not necessary. You might have inherited that from doing regexes on HTML? It looks like it. So get into the habit of not using // as your separation pattern. Use || or ## or {}{} instead.

Second, this regex does exactly what you want it to, you've told it to find the first < it comes across and match, non-greedily, to the first > it comes across. That's why it's matching the way it is.

$str =~ s|(.*)<.*?>|$1|; does what you want. Match, greedily, and keep, anything up to a < (greediness is your friend in this kind of situation).

But then so does $str =~ s|</a>$||; if all you need is to take the closing anchor tag off the end. It's not possible to know exactly what you want from this example.



($_='kkvvttuubbooppuuiiffssqqffssmmiibbddllffss')
=~y~b-v~a-z~s; print