Вы можете извлечь эти пары ключей и значений, используя
(\w[^,=]*)=(.*?)(?=]|,\s*\w[^,=]*=)
См. Демонстрационный пример regex
Подробности
(\w[^,=]*)
- Группа 1: слово char, за которым следуют 0+ символов, отличных от =
и ,
=
- =
char (.*?)
- группа 2: любые 0+ символов, кроме символов разрыва строки, как можно меньше, вплоть до крайнего левого вхождения (?=]|,\s*\w[^,=]*=)
- ]
char или ,
, 0+пробелы, слово char и затем 0+ символов, отличных от =
и ,
, а затем =
.
Java demo :
String s = "[key1=value1, key2=value2, key 3= text,value # 3]";
Pattern pattern = Pattern.compile("(\\w[^,=]*)=(.*?)(?=]|,\\s*\\w[^,=]*=)");
Matcher matcher = pattern.matcher(s);
while (matcher.find()){
System.out.println("Key-value pair found:");
System.out.println(matcher.group(1).trim());
System.out.println(matcher.group(2).trim());
}
Вывод:
Key-value pair found:
key1
value1
Key-value pair found:
key2
value2
Key-value pair found:
key 3
text,value # 3