Замените и/или удалите первые n вхождений определенной строки значения ключа JSON из файла кода в редакторах с поддержкой регулярных выражений PCRE.

Как я упоминал в заголовке вопроса, у меня есть много файлов кода PHP, где мне нужно найти и заменить/удалить определенную строку значения ключа JSON из этих файлов PHP с помощью любых текстовых редакторов, поддерживающих PCRE-Regex.

Строка, которую я должен найти и удалить (заменить ничем, даже пробелом), которая охватывает несколько строк (и отступ составляет 2 пробела, но может быть и 4 пробела), выглядит так:

{
  label: "Other",
  value: "Other",
},

Как я могу удалить первые (n) вхождения вышеуказанной строки с помощью PCRE-regex в редакторе Sublime Text/Notepad++, чтобы он не вносил никаких неожиданных изменений в другом месте файла?

Я не очень хорошо разбираюсь в Regex при множественных вхождениях и жадных-нежадных совпадениях, поэтому любая помощь приветствуется, хотя я пробовал это, но это не сработало:

(.*?):\"Other\",

person Vicky Dev    schedule 03.03.2021    source источник
comment
Не могли бы вы предоставить пример кода с тремя блоками, упомянутыми для (n) равных 2?   -  person Peter Thoeny    schedule 04.03.2021
comment
Также вы хотите удалить любой ключ со значением "Other" или только определенные ключи?   -  person Peter Thoeny    schedule 04.03.2021
comment
@VickyDev Ответ сработал?   -  person The fourth bird    schedule 07.03.2021
comment
Да, спасибо за подробное объяснение!!   -  person Vicky Dev    schedule 07.03.2021


Ответы (1)


Для примера данных вы можете использовать

^{\R\h{2,}label:\h+"Other",\R\h{2,}value:\h+"Other",\R},
  • ^{ Начало строки и соответствие {
  • \R\h{2,} Соответствует новой строке, 2 или более горизонтальным пробельным символам
  • label:\h+"Other", Соответствует label: 1+ горизонтальным пробельным символам и "Other,"
  • \R\h{2,} Соответствует новой строке и 2 горизонтальным пробельным символам
  • value:\h+"Other",
  • \R}, Соответствует символу новой строки и },

Заменить пустой строкой

демонстрация регулярных выражений

Если Other может быть другим значением, вы можете использовать

^{\R\h{2,}label:\h+"[^"\\]*(?:\\.[^"\\]*)*",\R\h{2,}value:\h+"[^"\\]*(?:\\.[^"\\]*)*",\R},

демонстрация регулярных выражений

person The fourth bird    schedule 04.03.2021