Мы можем попробовать разбить на следующий шаблон регулярных выражений:
\s+(?=[^=]+=)
Это означает разделение на любое количество пробелов, за которым сразу следует клавиша плюс =
. Обратите внимание, что это разделение не потребляет что-либо кроме разделительного пробела, получая ключи со значениями в целости.
Map<String, String> map = new HashMap<>();
String input = "Reference=R1,R2 GroupId=G01 Date=12/02/2017 15:25";
String[] parts = input.split("\\s+(?=[^=]+=)");
for (String part : parts) {
map.put(part.split("=")[0], part.split("=")[1]);
System.out.println(part);
}
Это выводит:
Reference=R1,R2
GroupId=G01
Date=12/02/2017 15:25
Единственный дополнительный шаг, который я здесь явно не тестировал, - это генерация карты с ее ключами и значениями.