2010-07-03 5 views
0

Я ищу для Regex читать кесарево файл # класс какRegex прочитать файл класса

MyClass{} 

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

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

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

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

+0

Вы уверены, что хотите такой простой RegEx? Возможно, вы можете добавить более подробную информацию к этому вопросу, так как с вашим описанием вы также можете сделать 'if (str ==" MyClass {} ") вернуть« MyClass »;' – Oded

+0

Это довольно простое регулярное выражение (Тим предоставил хорошую решение с объяснением), но я знаю, что регулярные выражения могут быть довольно пугающими для новичков, поэтому вот хороший ресурс, который научит вас всему, что вам нужно знать, чтобы быть компетентным в регулярных выражениях: http://www.regular-expressions.info/tutorialcnt .html Просто начните с главы «Персонажи» и прочитайте их в порядке. Это потрясающий ресурс. –

+0

Да, это не так просто, справедливо сказано Одедом, на самом деле это полный файл C#, начинающийся с namespce, классы в пространствах имен, методы и т. Д., И мне было бы нужно сделать это по иерархии –

ответ

1

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

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

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

Объяснение:

\b: Начало матча на границе слова.

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

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

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

Смежные вопросы