2014-02-11 72 views
0

我使用下面的代碼從字符串使用正則表達式提取方法和屬性

string pattern = @"@[\w\.\()]+"; 
string value = "Create Account for @DisplayName() (Code : @Code)"; 
var reg = new Regex(pattern); 
var matchs = reg.Matches(value); 
foreach (var match in matchs) 
{ 
    Console.WriteLine(match.ToString()); 
} 

下面的提取方法和屬性的結果

@DisplayName() 
@Code) 

這不是我期望的結果,我預期結果如下

@DisplayName() 
@Code 

我該怎麼辦?

+1

正則表達式是什麼語言? –

+0

我使用.Net框架4 – Eagle

回答

1

您允許)在您的班級中。強制)前面有(,並使兩者一起可選。

@[\w\.]+(\(\))? 
+0

你不需要在類內跳過'.'。 – Barmar

+0

是的好點 - 我只是複製了OP的部分,並糾正了必要的一點。 – Utkanos

+0

當字符串是「Create Account for @DisplayName()。ToString()(Code:@Code)」時它不起作用 – Eagle

0

我假設正則表達式模式需要支持多個屬性和函數。

@"@\w+(\(\))?(\.\w+(\(\))?)*"