2014-03-01 120 views
0

我在Visual Basic中取消了一個非常簡單的Java編譯器。我想解析Java代碼中的類名,我將其粘貼到我的VB程序的文本框中。例如:在vb.net中使用regex.match找到類名

class MyPro { // in this case i need to get "MyPro" 

我使用Regex.Match爲此,但我失敗了。下面是我試過的代碼:

Dim regex As Regex = New Regex("(class)*{") 
    Dim match As Match = regex.Match("class mypro{") 
    If match.Success Then 
     Console.WriteLine(match.ToString) 
    End If 

編輯:

有時候源代碼如下所示:

class Football extends Sports{ 

在這種情況下,我想Football

有時則是:

class Dog implements ISpeak{ 

在這種情況下,我想Dog

有時兩個類也實現延長,像這樣:

class hello implements Serializable extends Object { 

有4種模式:

  1. class MyPro { //I want to get "MyPro"
  2. class Football extends Sports{ //"Football"
  3. class Dog implements ISpeak{ //"Dog"
  4. class hello implements Serializable extends Object { //"hello"
+0

「非常簡單的java編譯器」。到現在爲止還挺好。在Visual Basic中?並使用正則表達式進行解析?也許再給它一個想法? –

+0

沒有編譯器的意思是它發送javac + classname.java到命令提示符然後java + claaname來運行它.. –

回答

1

你可以使用以下正則表達式:

class\s+([^\s]+)[\s\r\n{] 

類的值將具有索引= 1。在C#的組中被捕獲,這將是:match.Groups[1].Value

+0

完美的答案,當類擴展,執行單詞時仍然存在一個小問題.i capture match.group [1]然後拆分空間,並得到正確的類,即使有擴展,實現。但我想知道如何獲得類沒有擴展,實現只使用正則表達式。 –

+0

我does.hope它很明顯給你 –