Бухгалтерия сдаёт отчетность по контролируемым сделкам. Файл протокола выводит ошибки, но не содержит ссылок на номер сделки (из какого места растут руки у разработчиков программы проверки?).
Озадачился поиском в XML-документе под-документа, который не содержит определенную последовательность символов (притом что почти все под-документы её содержат).
Дано : во всём документе 4725 вхождений подстроки «</СвКонтрСд>», но ровно на две меньше вхождений подстроки «СвОргУчаст».
Найти : вхождения подстрок «<СвКонтрСд>»символы»</СвКонтрСд>», где в «символах» нет СвОргУчаст.
Решение : писать специальную программу не стал. Взял Notepad++ 6.7.7 и стал заменять в нём регулярное выражение (под-документ целиком)
<СвКонтрСд НомПорСд=»(\d+)».+?СвОргУчаст.+?</СвКонтрСд>
на $1 (числовой идентификатор под-документа).
Расшифровка : «.+?» — это ленивый, минимальный поиск. Ищет минимальное количество символов.
На выходе получилась последовательность чисел в строках, где нумерация иногда перескакивает через единицу. Вот там где она перескочила через единицу — документ с тем номером и содержит «дефект» (так как он «съел» правильный документ с последующим номером).