Регулярные выражения. Поиск ущербного XML документа

Бухгалтерия сдаёт отчетность по контролируемым сделкам. Файл протокола выводит ошибки, но не содержит ссылок на номер сделки (из какого места растут руки у разработчиков программы проверки?).

Озадачился поиском в XML-документе под-документа, который не содержит определенную последовательность символов (притом что почти все под-документы её содержат).


Дано : во всём документе 4725 вхождений подстроки «</СвКонтрСд>», но ровно на две меньше вхождений подстроки «СвОргУчаст».
Найти : вхождения подстрок «<СвКонтрСд>»символы»</СвКонтрСд>», где в «символах» нет СвОргУчаст.
Решение : писать специальную программу не стал. Взял Notepad++ 6.7.7 и стал заменять в нём регулярное выражение (под-документ целиком)

<СвКонтрСд НомПорСд=»(\d+)».+?СвОргУчаст.+?</СвКонтрСд>

на $1 (числовой идентификатор под-документа).

Расшифровка : «.+?» — это ленивый, минимальный поиск. Ищет минимальное количество символов.

На выходе получилась последовательность чисел в строках, где нумерация иногда перескакивает через единицу. Вот там где она перескочила через единицу — документ с тем номером и содержит «дефект» (так как он «съел» правильный документ с последующим номером).

Запись опубликована в рубрике Дележка опытом, Поиск данных с метками , , . Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.