Выражение регулярных выражений - выберите все, НЕ имеющие определенного атрибута и не новые строки - PullRequest
0 голосов
/ 14 октября 2019

Если вы хотите выбрать любые строки, которые имеют инструкцию XML, но внутри должен быть пропущенный атрибут. Так что я могу легко находить плохие данные.

Так что это решение здесь работает, но в моем примере у меня нет новых строк. Это без пробелов.

Регулярное выражение:

/^<SomeState((?!SearchedAttribute).)*$/gm

хорошо работает на:

enter image description here

но при удалении пробелов это происходит не из-за ^ enter image description here

и он их больше не находит.

Как я могусделать это со всеми в одной строке?

Идея № 1:

/<SomeState((?!SearchedAttribute).)*/gm

уже лучше, но я не хочу, чтобы условия выбирались:

enter image description here

Тестовая строка:

<SomeState><SearchedAttribute Key=Value/></SomeState>
<SomeState><SearchedAttribute Key=Value/></SomeState>
<SomeState Attr1><BadAttribute Key=Value/></SomeState>
<SomeState><SearchedAttribute Key=Value/></SomeState>
<SomeState><BadAttribute Key=Value/></SomeState>

1 Ответ

0 голосов
/ 14 октября 2019

Я нашел решение, удалив пробелы. Так что если у вас есть notepad ++ и XML Tools addon. У вас будет опция Linarize XML: enter image description here

Теперь скопируйте однострочную строку XML и выполните ее через это регулярное выражение:

/<SomeState((?!SearchedAttribute).)*SomeState/gm

Это работает какожидается и просто выбирает плохие экстры.

...