Этот вопрос следует из . net regex - строк, которые не содержат полной остановки в последнем элементе списка
Проблема теперь в следующем. Обратите внимание, что примеры были изменены и добавлены - все должны быть удовлетворены. Хорошие примеры не должны возвращать совпадений, а плохие примеры должны возвращать совпадения.
Я пытаюсь использовать. net регулярное выражение для идентификации строк в XML данных, которые не содержат полной остановки перед последним тег. У меня не так много опыта с регулярными выражениями. Я не уверен, что мне нужно изменить и зачем получить результат, который я ищу.
В конце каждой строки данных есть разрывы строк и возврат каретки.
Схема используется для XML. У нас нет доступа к. Net коду - только пользователи, использующие пользовательское приложение.
Пример 1 с ошибками XML Данные - должны давать 1 совпадение:
<randlist prefix="unorder">
<item>abc</item>
<item>abc</item>
<item>abc</item>
</randlist>
Пример 2 из плохих XML Данные - должны давать 1 совпадение:
<randlist prefix="unorder">
<item>abc. abc</item>
<item>abc. abc</item>
<item>abc. abc</item>
</randlist>
Пример 1 из хороших XML Данные - регулярное выражение не должно давать совпадений - полная остановка, предшествующая последней </item>
:
<randlist prefix="unorder">
<item>abc</item>
<item>abc</item>
<item>abc.</item>
</randlist>
Пример 2 из хороших XML Данные - регулярное выражение не должно давать совпадений - полная остановка предшествует последней </item>
:
<randlist prefix="unorder">
<item>abc. abc</item>
<item>abc. abc</item>
<item>abc. abc.</item>
</randlist>
Шаблоны регулярных выражений, которые я пробовал, которые не работали (либо ложные срабатывания, либо нет совпадений с использованием https://regex101.com/) для вышеуказанных критериев в плохих XML данных (не проверено на хороших XML данных):
^<randlist \w*=[\S\s]*\.*[^.]*<\/item>[\n]*<\/randlist>$
^\s+<item>[^<]*?(?<=\.)<\/item>$