Как найти вложенные комментарии с помощью групп регулярных выражений - PullRequest
0 голосов
/ 07 февраля 2019

Я пытаюсь найти все комментарии в куске текста с помощью c # с помощью регулярных выражений.Комментарии выглядят так:

(*Some comment text*)
(*Some comment (*In comment*) might also appear*)
(*Comment might 
be on serveral lines*)

Начало комментария (* Конец комментария *)

Найти комментарий не так сложно, если это не такnested: \(\*(.*?)\*\)

Я также нашел решения для комментариев, где начало и / или конец комментария существует только из одного символа (в приведенном ниже примере начало - (, а конец - )).Это работает для вложенных комментариев:

(?<Open>[(])(([^()]|(?<Open>[(])|(?<-Open>[)]))*?)(?<-Open>[)])(?(Open)(?!))

Приведенное выше решение основано на поиске альтернатив => Группа открытия, группа закрытия или все, что не является группой открытия и закрытия.

Это последняя часть, которая хитрая.Как я могу сказать регулярному выражению, что [^()] должно быть комбинацией символов вместо отдельных.Что я хотел бы сделать, это:

(?<Open>\(\*)(([^\(\*,\*\)]|(?<Open>\(\*)|(?<-Open>\*\)))*?)(?<-Open>\*\))(?(Open)(?!))

Но [^\(\*,\*\)] следует рассматривать как - не (*" and also not "*) - вместо - ни один из этих (*,*) символов -

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