in reply to Angle brackets and regex problem

makes sense to me:
[^>] - matches 1 \d+ - matches 2 [a-z]* - matches empty string [^<] - matches a
And it's the first place that you have digits. What are you thinking it should have matched?

Also, generally, you don't want to use regex against angle-bracket stuff. Use something based on HTML::Parser, XML::Parser, or XML::LibXML, please.