Enum, который я хочу извлечь, выглядит следующим образом:
...
other code
...
enum A
{
a,
b=2,
c=3,
d//{x}
}
...
More Enums like the above.
...
Сначала я попытался использовать опцию Singleline
с регулярным выражением:
enum\s*\w+\s*{.*?\}
Однако,так как комментарии имеют скобки. Регулярное выражение не работает.Он остановится, когда он перейдет к скобке в комментариях.
Поэтому я попытался исключить скобку после комментариев.Исходя из того, что я искал до сих пор, мне кажется, что мне нужен отрицательный взгляд вперед с конструкцией группировки Multiline
.
Затем я попытался разобрать скобки без комментариев вперед.
Подшаг - найти скобки после комментариев: (?m:^.*?//.*?}.*?$)
.
Однако, похоже, что .
по-прежнему совпадает с любым символом, включая символ новой строки, даже в многострочном режиме.
Затем я попытался использовать многострочный.Поскольку основная проблема заключается в квадратных скобках комментариев. Я пытался:
(?!//.*)}
Отрицательный взгляд вперед не работает так, как я ожидал.
Вот ссылка csharp-regex-test-link для проверки.
Подводя итог, мне нужно разобрать enum из файла исходного кода csharp.
Основная проблема для меня - это квадратные скобки в комментариях.
Редактировать : Чтобы уточнить
1. скобки в комментариях попарно.Например:
xxx=xxx; //{xx}
2.комментарии только в виде //
3. Я не могу полагаться на отступы.