Выбор "не совпадающих" данных - PullRequest
0 голосов
/ 01 апреля 2019

С помощью выражения ниже я могу найти все данные, которые содержат ToolTipML в фигурных скобках.Но я пытаюсь выбрать все данные, которые не содержат ToolTipML.Может кто-нибудь указать, что мне не хватает?

({[^{}]*?)(ToolTipML)([^}]*})

вот пример https://regex101.com/r/bNq6kV/1

Ответы [ 2 ]

0 голосов
/ 01 апреля 2019

К сожалению, регулярное выражение не имеет отрицания шаблона, однако популярным хаком является использование повторного шаблона любого совпадения, предвкушения, а затем любого совпадения.

Например, в вашем случае регулярное выражение (?s)\{(?:.(?!ToolTipML).)+?\}

Мы гарантируем, что каждому символу ввода не предшествует запрещенный шаблон. Недостатком является то, что большинство реализаций регулярных выражений не поддерживают шаблоны предпросмотра / просмотра назад переменной длины, но в вашем случае это работает безупречно .

Это популярный вопрос, и на него уже был дан ответ с более подробной информацией и пояснениями

0 голосов
/ 01 апреля 2019

Я вас правильно понял, тогда вы можете использовать отрицательный взгляд:

{((?!ToolTipML)[^{}])*}

https://regex101.com/r/bNq6kV/3

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...