Именованная группа захвата внутри отрицательного взгляда за регулярное выражение
Я хочу избежать перехвата ввода как:
:):) но хотите поймать sa:) ds или просто хотите исключить из результата, если есть два или более одинаковых тега, которые касаются друг друга.
Моя логика гласит, что мне нужно использовать отрицательный взгляд назад и именованную группу захвата, но я не могу заставить ее работать, и я становлюсь неуверенным, если правильный путь.
Я пробовал с:(?<!(?P<happy>:\)))(?P=happy)
так что, если у меня есть вход как:):)
-:) - abc, я хочу, чтобы совпадать только со второй строки ":)"
1 ответ
Если вы собираетесь построить регулярное выражение для.NET, не работайте с другими механизмами RegEx для проверки ваших шаблонов. Тем не менее, вы можете извлечь выгоду из видоискателей переменной длины в.NET, но не в PCRE (движок, с которым вы работаете).
Это будет обходной путь в.NET:
(?<happy>:\))(?<!\k<happy>{2,})(?!\k<happy>)
Это очевидно не работает в regex101.com