我正在尝试在 .NET 中编写一个正则表达式,以从看起来像这样的函数列表中捕获整个函数。
public string Test1()
{
string result = null;
foreach(var item in Entity.EntityProperties)
{
result +=string.Format("inner string with bracket{0}", "test");
}
return result;
}
public string Test5()
{
return string.Format("inner string with bracket{0}", "test");
}
public string Last()
{
return string.Format("inner string with bracket{0}", "test");
}
所以我得到了
((?<function>public string (?<fName>\w+)\(\)\s*{.*?})(?=\s*public string))
这将捕获除最后一个函数之外的所有函数......或者这个
((?<function>public string (?<fName>\w+)\(\)\s*{.*?})(?=\s*(public string)|$))
这将正确匹配除第一个函数之外的所有函数。第一个函数仅部分匹配。
public string Test1()
{
string result = null;
foreach(var item in Entity.EntityProperties)
{
result +=string.Format("inner string with bracket{0}", "test");
} <-- the first capture only get to this point.
任何的想法?如果可能,请提供一些解释。