Учитывая наличие:
Map<List<String>, Map<List<String>, Collection<Integer>>>
просто для начала, я собираюсь заявить, что это плохая работа для регулярного выражения. Регулярные выражения не подходят для сопоставления вложенных элементов. См. этот пост о вредном воздействии на психическое здоровье попыток.
Для простого случая, я думаю, послужит следующее.
\p{javaIdentifierStart}\p{javaIdentifierPart}*<\p{javaIdentifierStart}\p{javaIdentifierPart}*>