ASP 标记页面内方法调用的正则表达式 C#
Regex for Method Calls inside of ASP markup pages by C#
我需要一个正则表达式模式来通过 c# 在 Asp 标记页面 (webform .aspx) 和 (MVC cshtml) 中查找任何类型的方法调用。
我正在寻找一种模式来涵盖几乎像这样的可能性:
1) MethodName1()
2) ClassName.MethodName2(prm1,prm2,...)
3) new ClassName.Obj1.Obj2.Method3(...)
4) [new] [AnyThing].[anthing].[anything]([anything])
5) MethodName1().ToString()
....
这是我的代码,文件内容是标记文本文件。
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();
试试这个正则表达式,它还添加了一些形式为 (?<groupname>regex)
的命名组,访问方式如下:myMatch.Groups["myGroupName"].Value
:
(?:\[?new]?)?\s*(?<source>(?:\[?\w+\]?\.)*)\[?(?<method>\w+)\]?\((?<args>\[?.*?\]?)\)
input/output: (online demo here)
我需要一个正则表达式模式来通过 c# 在 Asp 标记页面 (webform .aspx) 和 (MVC cshtml) 中查找任何类型的方法调用。
我正在寻找一种模式来涵盖几乎像这样的可能性:
1) MethodName1()
2) ClassName.MethodName2(prm1,prm2,...)
3) new ClassName.Obj1.Obj2.Method3(...)
4) [new] [AnyThing].[anthing].[anything]([anything])
5) MethodName1().ToString()
....
这是我的代码,文件内容是标记文本文件。
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();
试试这个正则表达式,它还添加了一些形式为 (?<groupname>regex)
的命名组,访问方式如下:myMatch.Groups["myGroupName"].Value
:
(?:\[?new]?)?\s*(?<source>(?:\[?\w+\]?\.)*)\[?(?<method>\w+)\]?\((?<args>\[?.*?\]?)\)
input/output: (online demo here)