Regex (. NET), чтобы найти шаблон между двумя другими шаблонами - PullRequest
2 голосов
/ 07 мая 2020

У меня есть строка, которая выглядит примерно так:

DOG[i want to look for specific hits of stuff here]

Я хочу сопоставить любые вхождения слов «взгляд» или «прочее», которые встречаются между открытием DOG[ и закрытием ]

Я знаю, что могу написать регулярное выражение типа (?<=DOG\[).*?(?=\]), чтобы найти весь текст между открывающим и закрывающим битами, но я хочу искать только определенные c слова между этими открыватели и доводчики.

Как я могу это сделать?

1 Ответ

2 голосов
/ 07 мая 2020

Поскольку в. NET регулярном выражении вы можете использовать шаблоны, соответствующие строкам неизвестной длины в ретроспективе, вы можете использовать

(?<=DOG\[[^][]*?)(?:look|stuff)(?=[^][]*])

См. Демонстрацию регулярного выражения .

Здесь

  • (?<=DOG\[[^][]*?) - положительный просмотр назад, который соответствует местоположению, которому непосредственно предшествует DOG[ и любые символы 0+, кроме [ и ]
  • (?:look|stuff) - look или stuff
  • (?=[^][]*]) - положительный просмотр вперед, который соответствует местоположению, сразу за которым следуют любые символы 0+, кроме [ и ], а затем ].
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...