Как удалить строки по шаблону из текста? #662482


#0 by D_Pavel
Есть текст XML, нужно удалить все строки типа <Адрес>*****</Адрес> чтобы сократить размер, где ***** каждый раз меняется. Как их все удалить? Поиск и замена по подстроке не поможет, так как искомая строка заранее не известна.
#1 by Wobland
можно просто не обращать внимания на адрес при чтении
#2 by Wobland
или даже не выгружать адрес при записи
#3 by Кирпич
Для этого придуманы регулярные выражения
#4 by D_Pavel
не получится, тут нет разбора по строкам ПрочитатьXML(ЧтениеXML); Переписывать весь механизм не выгодно. Не получится, данные выгружаются командой  ЗаписатьXML(ЗаписьXML, Данные);
#5 by Рэйв
перебери xml как текст построчно, ищи в строке через Найти сначала <Адрес>и начиная с него формируй строку ан удаление до </Адрес> включительно.
#6 by Defender aka LINN
Регулярные выражения
#7 by Кирпич
Похоже, автор ожидает готовый вариант решения его проблемы. Те самые восемь строк, которые добрый дядя ему сюда запостит. Сейчас так модно.
#9 by Defender aka LINN
А вот и дядя нашелся
#10 by Кирпич
:))
#11 by Кирпич
Интересно, спасибо скажет или нет.
#12 by D_Pavel
Ну можно так...
#13 by D_Pavel
Так уже сделал, не везде получилось. Не удаляется многострочный например такой текст:
#14 by Wobland
не так ты сделал
#15 by D_Pavel
что не так?
#16 by Wobland
у звезда, у тебя плюс. но я тут не помощник, не помню тонкостей
#17 by Defender aka LINN
Ну, кроме Pattern там еще пара-тройка свойств есть... И на форуме тут Орефков, кажись, выкладывал ВК
#18 by D_Pavel
звезда и плюс - это без разницы в данном случае, так как не может быть в этом месте меньше одного символа.
#19 by MSII
Не соответствует твоя строка паттерну, вот и не удаляется.
#20 by D_Pavel
все свойства ставил и истина, и -1, никакой разницы, все равно не находит.
#21 by D_Pavel
Спасибо, К.О.
#22 by D_Pavel
со звездой проверил тоже. Не находитю
#23 by MSII
*? - а так?
#24 by orefkov
. - это любой символ, кроме перевода строки. Если нужен действительно любой символ, надо использовать [sS] И со звездочкой аккуратнее - удалит все от первого открывающего тега до последнего, лучше ее жадность обуздать знаком вопроса. Вот так примерно:
#25 by orefkov
Выкладывал. ВК - Описание -
#26 by orefkov
+ Проверил, все находит:
#27 by Defender aka LINN
VBScript.RegExp тоже находит :)
#28 by orefkov
На скриншоте как раз он и работает, вернее его брат из JScript :) Пост был не про мою ВК, а про правильный шаблон поиска.
#29 by D_Pavel
А так вот как получается: Ошибка при вызове метода контекста (Replace) по причине: Произошла исключительная ситуация (0x800a139a)
#30 by D_Pavel
Спасибо, так само то!
#31 by D_Pavel
Не работает! Как удалить строку только в нужных местах? Например нужно удалить <Адрес/> ТОЛЬКО внутри конструкции "<Удалять>": <НеУдалять>    <Адрес/> У меня получается что везде удаляет.
#32 by D_Pavel
А, все, сам разобрался.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям