Текст можно сделать не жадным:
Pattern p = Pattern.compile("([\\d]{1,2})([\\w]*?)(A?BC)([\\w]*)");
Ссылка:
Reluctant quantifiers
-----------------------------
X?? X, once or not at all
X*? X, zero or more times
X+? X, one or more times
Источник: Pattern
javadoc: неохотные квантификаторы
По сути: неохотные квантификаторы будут совпадать как можно меньше, в отличие от жадных квантификаторов по умолчанию, которые будут совпадать настолько, насколько это возможно.Вы получаете неохотный квантификатор, добавляя ?
к другому квантификатору.