Регулярное выражение для замены различных комбинаций двойных кавычек внутри строки с двойными кавычками - PullRequest
1 голос
/ 21 июня 2020

Регулярное выражение для замены различных комбинаций двойных кавычек внутри строки с двойными кавычками.

Не удается очистить JSON одним регулярным выражением (для PCRE). Я просто не знаю, что делать дальше.

("title":")[\s\S]+(", "partid":)

Пробовал разные варианты поиска и замены. Например, ("title": "[^"] ) (") ([^"] ) (") (," p) $ 1 $ 3 $ 4 $ 5 , затем то же самое для двух двойных кавычек, для трех и т. д.

Примеры строк:

{ "DT_RowId":"c2a839fb-580a-11e8-bac6-00155d080416", **"title":"Гайка 7/16"-14" UNC топорна;14H813;P88344 12""**, "partid":"S.4964", "manufacturerid":"2a7dc482-af13-11de-88d3-00e081b05e17", "manufacturer":"SPAREX", "quantity":">10", "price":"8.93", "actionprice":"", "rep":1, "img":0 } , { "DT_RowId":"05d8b40c-ec93-11dd-8f72-00e081b05e05", "title":"Нож ротора (зам.501060)", "partid":"501063", "manufacturerid":"3a7e891f-07ba-11de-8a95-00e081b05e17", "manufacturer":"Geringhoff", "quantity":">10", "price":"932.27", "actionprice":"584.90", "rep":1, "img":1 } , { "DT_RowId":"b7c6c9ee-adca-11e3-8202-00155d012119", **"title":"Олива моторна "CASTROL VECTON" 10W40 E4"/E7", 208L"**, "partid":"RB-V14E4E7-208L", "manufacturerid":"763d805e-c53b-11de-9210-00e081b05e05", "manufacturer":"CASTROL", "quantity":">10", "price":"111.60", "actionprice":"", "rep":1, "img":1 } , { "DT_RowId":"05d8b41d-ec93-11dd-8f72-00e081b05e05", **"title":"Н""о"ж"**, "partid":"501251", "manufacturerid":"3a7e891f-07ba-11de-8a95-00e081b05e17", "manufacturer":"Geringhoff", "quantity":">10", "price":"719.45", "actionprice":"", "rep":1, "img":1 }

Пожалуйста, помогите. Пожалуйста помоги. Как удалить или избежать двойных кавычек между "title": " и ", "partid":

1 Ответ

2 голосов
/ 21 июня 2020

Вы можете использовать

(?:\G(?!\A)|"title":").*?\K"(?=.*?"\s*,\s*"partid":)

Заменить пустой строкой. См. Демонстрацию регулярного выражения .

Подробности

  • (?:\G(?!\A)|"title":") - конец предыдущего совпадения или "title":" строка
  • .*? - любые символы 0+, кроме символов разрыва строки, как можно меньше
  • \K - оператор сброса соответствия
  • " - " символ
  • (?=.*?"\s*,\s*"partid":) - следуют любые символы 0+, кроме символов перевода строки, как можно меньше, ", 0+ пробелов, ,, 0+ пробелов и "partid":.
...