У меня есть несколько файлов XML, из которых мне нужно удалить строку. Одна и та же строка существует в разных разделах файла, но мне нужно удалить только последний найденный экземпляр. Например -
Это строка в файле.
Для этого я использую функцию «Найти в файлах» в Notepad++. Тиа.
Попробуйте выполнить следующий поиск и замену в режиме регулярных выражений (с включенной точкой):
Find: (.*)Same Text(?:\r?\n|$)(.*)
Replace: $1$2
Это должно работать, потому что исходная группа захвата (.*)
должна соответствовать и захватывать весь контент до, но не включая вхождения прошлойSame Text
. Затем мы также сопоставляем и фиксируем весь контент после этого последнего вхождения. Наконец, мы заменяем только первые две группы захвата, чтобы эффективно соединить строку, которую вы хотите удалить.
Как говорится в моем ответе, вам нужно проверить . matches newline
Сейчас проверил, но данных нет. Если я ищу строку, которую мне нужно удалить в одиночку, она находит все экземпляры в файле, но когда я использую (.*)Text here(?:\r?\n|$)(.*), то это не так..
@AleksandarZoric Вам нужно избежать \?
буквального вопросительного знака в вашем шаблоне.
Да, я пробовал это раньше, но все еще сталкивался с той же проблемой. Думаю, мне тоже нужно избегать фигурных скобок и, возможно, двойных кавычек, но пробовал несколько разных способов, и проблема все еще сохраняется.
Необработанные данные: <Simple name = "DisplayValue" value = "{?Consumer}" />
Вы спасли день! Мне не хватило 2 побегов. Большое спасибо за это. Ценить это.
Я добавил скриншот и фактический текст, который мне нужно заменить. Когда я запускаю его, я получаю 0 вхождений, которые были заменены. Я действительно думаю, что это как-то связано с форматом строки, которую я заменяю. Это строка, которую мне нужно удалить, но только последний найденный экземпляр: <Simple name = "DisplayValue" value = "{?Consumer}" />