Regex для чтения файла класса - PullRequest
0 голосов
/ 03 июля 2010

Я ищу Regex для чтения файла класса ac #, например

MyClass{}

Регулярное выражение shld возвращает «MyClass» при передаче строки «MyClass {}».

Отредактировано:

Common
{
  MyClass1
  {
    Method1
    {
      "Helloworld";
      "GoodBye";     
    }
    Method2
    {
      "SayGoodMorning";
    }
  }
  MyClass2
  {
    Method3
    {
      "M3";
    }
  }
}

На самом деле мне нужно прочитать иерархию, как указано выше, ее может быть количество и читать до и внутри {}

1 Ответ

1 голос
/ 03 июля 2010

Если ваш движок регулярных выражений поддерживает lookahead, тогда вы можете использовать

\b[^{\s]+(?=\s*\{)

Это будет соответствовать ["Common", "MyClass1", "Method1", "Method2", "MyClass2", "Method3"] в вашем примере.

Пояснение:

\b: начать поиск с границы слова.

[^{\s]+: сопоставить один или несколько символов, кроме открывающих скобок или пробелов.

(?=\s*\{): Утверждение, что совпадение заканчивается символом, за которым следует дополнительный пробел (включая разрывы строк) и открывающая скобка.

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

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