Шаблон регулярного выражения с положительным и отрицательным прогнозом - PullRequest
0 голосов
/ 06 февраля 2019

У меня есть строка типа [key1=value1, key2=value2].Он также может содержать только один ключ, такой как [key1=value1] или много других ключей.Как я могу написать регулярное выражение для получения

ожидается

Group1: key1=value1
Group2: key2=value2

Я пробовал шаблон /(?<=\[)(.*)=(.*)(,)*(?=\])/ здесь , но это даетя

Актуально

Group1: key1=value1, key2
Group2: value2

1 Ответ

0 голосов
/ 06 февраля 2019

Вы можете извлечь эти пары ключей и значений, используя

(\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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...