Я хочу проанализировать строку из 12 (часто) различных чисел с плавающей точкой (с некоторым не относящимся к делу текстом впереди, отмечая поле), и хочу, чтобы все они оказались в собственной группе захвата, чтобысобирать их из matcher по одному.Я заметил, что я преуспел, написав следующее:
Pattern lastYearIncomePattern = Pattern.compile("(.+\\{\\s)([0-9]{1,2}\\.[0-9]{3}\\s)([0-9]{1,2}\\.[0-9]{3}\\s)([0-9]{1,2}\\.[0-9]{3}\\s)([0-9]{1,2}\\.[0-9]{3}\\s)([0-9]{1,2}\\.[0-9]{3}\\s)([0-9]{1,2}\\.[0-9]{3}\\s)([0-9]{1,2}\\.[0-9]{3}\\s)([0-9]{1,2}\\.[0-9]{3}\\s)([0-9]{1,2}\\.[0-9]{3}\\s)([0-9]{1,2}\\.[0-9]{3}\\s)([0-9]{1,2}\\.[0-9]{3}\\s)([0-9]{1,2}\\.[0-9]{3}\\s)");
, что является изнурительной массой дублированного кода.Партия ([0-9]{1,2}\\.[0-9]{3}\\s)
произойдет 12 раз.
Есть ли способ сделать это лучше?Я посмотрел, как определить эту строку для себя, а затем добавить ее в регулярное выражение с помощью некоторого цикла и StringBuilder, но все это кажется слишком преувеличенным.Очевидно, что обратная ссылка тоже не работала, поскольку 12 значений разные.
Мой первый подход был написать ([0-9]{1,2}\\.[0-9]{3}\\s){12}
, но это поместит все 12 чисел в одну длинную строку, и это не то, что я хочу,так как мне понадобится еще один паттерн, чтобы потом собрать поплавки один за другим, а затем предпочтительнее решение для дубликатов безумия.
Спасибо