Отдельный ключ json: значение через запятую, но с незакрытыми кавычками внутри кавычек значений - PullRequest
0 голосов
/ 16 октября 2019

Например, у меня есть этот json:

{"a":"some value", "b":"some value", "c": "some ,\" value"}

Мне нужно получить:

"a":"some value" and "b":"some value" and "c": "some ," value"

Я закончил с этим регулярным выражением (,)(?=(?:[^\"]|\"[^\"]*\")*$), ноэто не работает с третьей парой ключ-значение.

1 Ответ

1 голос
/ 16 октября 2019

Если вы действительно должны сделать это с помощью регулярного выражения, тогда вы можете попробовать:

(".*?(?<!\\)")\s*:\s*(".*?(?<!\\)")
  • (".*? - создать группу захвата и сопоставить открывающую двойную кавычку и лениво соответствовать нулю или более излюбой символ
  • (?<!\\) - убедитесь, что \ не предшествует закрывающей двойной кавычке
  • ") - найдите закрывающую двойную кавычку и закройте группу захвата
  • \s*:\s* - соответствует двоеточию : в окружении необязательных пробелов
  • (".*?(?<!\\)") - см. Маркированные пункты с 1 по 3

https://regex101.com/r/25qa84/1

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