Здесь много предположений, но с целью найти все цены в данной строке, я бы сделал следующее вместо попытки разбить строку как таковую .
String line = "item 1 = $2 item 2 = $3 item 3 = $4";
Pattern pat = Pattern.compile("\\$([\\d]+)");
Matcher m = pat.matcher(line);
while (m.find()) {
System.out.println(m.group(1));
}
Выход:
2
3 * * +1010
4
Таким образом, у нас есть только цены. Теперь, если цены могут иметь десятичные дроби и т. Д., Необходимо обновить регулярное выражение.
Такое обновленное регулярное выражение может быть:
Pattern pat = Pattern.compile("\\$([\\d]+[.]?[\\d]*)");
И с измененным вводом:
String line = "item 1 = $2 item 2 = $3.01 item 3 = $4.53";
Получается:
2
3.01
4.53