2010-07-03 57 views
0

我要尋找一個正則表達式來讀取一個C#類文件中像正則表達式來讀取一個類文件

MyClass{} 

正則表達式SHLD回報「MyClass的」,當傳遞的字符串「MyClass的{}」。

編輯:

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

其實我要讀一個層次像上文所述,能BN的是數量,並有如果您正則表達式引擎支持先行之前和在{}

+0

您確定要使用這麼簡單的RegEx?也許你可以在這個問題中添加更多的細節,就像你的描述一樣,你可以做'if(str ==「MyClass {}」)return「MyClass」;' – Oded 2010-07-03 07:00:05

+0

這是一個非常簡單的正則表達式(Tim提供了一個很好的解決方案w /解釋),但我知道正則表達式對於初學者來說可能相當嚇人,所以這裏有一個很好的資源,它會教會你需要知道的所有能夠勝任正則表達式的東西:http://www.regular-expressions.info/tutorialcnt .html 只需從「Characters」一章開始,然後按順序閱讀。這是一個了不起的資源。 – 2010-07-03 07:30:03

+0

是的,它不是那麼簡單,由Oded正確地說,實際上它是一個從namespce開始的完整的c#類似文件,名稱空間中的類,方法等,我將需要以層次方式 – 2010-07-03 07:35:45

回答

1

閱讀,那麼你可以使用

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

在你的例子中這將匹配["Common", "MyClass1", "Method1", "Method2", "MyClass2", "Method3"]

說明:

\b:在單詞邊界處開始比賽。

[^{\s]+:匹配除開大括號或空白字符以外的一個或多個字符。

(?=\s*\{):斷言匹配以可選空白(包括換行符)和左大括號之後的字符結尾。

限制與某些層次級別匹配的匹配(在這種情況下,只能在第二級嵌套匹配)對於一般的正則表達式來說是不可能的。這在某些正則表達式方言中可能是有可能的,但這正在擴展正則表達式所設計的範圍 - 解析器會更好地適應這種情況。