Да, вполне вероятно, что .*
он слишком «жадный» и захватывает столько символов, сколько может; вам нужно обратное - вместо этого нужно максимально короткое совпадение.
[^>]*
Вместо этого можно использовать один метод - он все равно будет соответствовать как можно большему числу, но только до первого >
, поэтому <ITEM_([^>]*)>
будет соответствовать только открывающий тег и ничего более.
В зависимости от синтаксиса регулярных выражений, .*?
может также работать - это явно переключает на *
«не жадный».