2016-05-06 10 views
0

Aspマークアップページ(webform .aspx)とc#による(MVC cshtml)の両方で、あらゆる種類のメソッド呼び出しを見つけるには正規表現パターンが必要です。私はこれらのようなほとんどの可能性をカバーするパターンを探していますC#によるASPマークアップページ内でのメソッド正規表現の呼び出し

:ここ

1)  MethodName1() 

2)  ClassName.MethodName2(prm1,prm2,...) 

3)  new ClassName.Obj1.Obj2.Method3(...) 

4) [new] [AnyThing].[anthing].[anything]([anything]) 

5)  MethodName1().ToString() 
.... 

は私のコードで、ファイルの内容は、マークアップテキストファイルです。 myMatch.Groups["myGroupName"].Value

int counter = 0; 
string line; 
var regex = new Regex(@"*[a-zA-Z].{1}+*[a-zA-Z](+*[a-zA-Z])+"); //?????? 

// Read the asp markup file and parse it line by line. 
var file = new System.IO.StreamReader(path); 
while ((line = file.ReadLine()) != null) 
    {      
     var match = regex.Match(line); 
     if (match.Success) 
     { 
      //Do sth 
     } 
     counter++; 
    } 
file.Close(); 
+0

正規表現はこれに最適な解決策ではありません。ネストされたメソッド呼び出しの問題に遭遇する。 'Method1(Method2(...))'。 Regexとネストされた構造の詳細については、[this](http://stackoverflow.com/questions/133601/can- regular-expressions-be-used-to-match-nested-patterns)を参照してください。より良い方法は、[ANTLR](http://www.antlr.org/)のようなものを使用することです。 [こちら](http://stackoverflow.com/questions/1732348/regex-match-open-tags参照) -except-xhtml-self-contained-tags/1732454#1732454)は、HTMLに関するものですが、一般的な考え方 –

答えて

2

、それはまた、フォーム(?<groupname>regex)の一部という名前のグループを追加し、この正規表現を試してみてください、と同様にアクセス

(?:\[?new]?)?\s*(?<source>(?:\[?\w+\]?\.)*)\[?(?<method>\w+)\]?\((?<args>\[?.*?\]?)\) 

入力/出力:(online demo here

enter image description here enter image description here

関連する問題