вы можете расширить свое регулярное выражение следующим образом: 1) начальное разделение для получения пар (как вы это делаете сейчас) 2) для каждой пары выполните другое разделение на :
, что даст вам первый элемент в качестве ключа и второй элемент в качествезначение
фрагмент кода:
public class Main {
public static void main(String[] args) {
Map<String, String> result = new HashMap<>();
String input = "Hi Welcome to my site. #binid:BIN-4 #lat:23.025243 #long:72.5980293 #nottype:assign";
String systemData = input.replace("Hi Welcome to my site. ", "");
Arrays.asList(systemData.split("#")).forEach(pair -> {
if (!pair.isEmpty()) {
String[] split = pair.split(":");
result.put(split[0], split[1]);
}
});
result.entrySet().forEach( pair -> System.out.println("key: " + pair.getKey() + " value: " + pair.getValue()));
}
}
Результат:
ключ: двоичное значение: BIN-4
ключ: значение nottype: назначить
ключ: значение шир .: 23.025243
ключ: длинное значение: 72.5980293