разделить данные с помощью запятой, ключ, содержащий двоеточие - PullRequest
0 голосов
/ 09 октября 2018

Я пытаюсь разделить данные, используя запятую в паре ключ-значение, но значение может содержать запятую:

String test2= abc=def,jkl,nm=ghi
String[] testVals=test2.split("(?=,\\w+=)(,)");

Теперь проблема связана с данными ниже:

Ввод:

1,abc=def123,nm=ghi-ghy,jkl,egrh=878787,kjasd:1:1=908@0982

и я получаю вывод в виде:

abc=def123
nm=ghi-ghy,jkl
egrh=878787,kjasd:1:1=908@0982

Ожидаемый вывод:

1
abc=def123
nm=ghi-ghy,jkl
egrh=878787
kjasd:1:1=908@0982

Здесь 1 отсутствует.

1 Ответ

0 голосов
/ 09 октября 2018

Вместо этого используйте это регулярное выражение:

,(?=[^,]*?=)


 String test2 = "1,abc=def123,nm=ghi-ghy,jkl,egrh=878787,kjasd:1:1=908@0982";
 testVals=test2.split(",(?=[^,]*?=)");

Пояснение

  • , соответствует запятой
  • (?=[^,]*?=) положительный взгляд на будущее утверждает, что между текущей совпавшей запятой и следующим знаком равенства нет запятой =

output

1
abc=def123
nm=ghi-ghy,jkl
egrh=878787
kjasd:1:1=908@0982

демо регулярное выражение 101

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...