我正在尝试找出如何在找到匹配项之前匹配模式的首次出现。 给它一些背景:
我有一个csharp代码文件,并且我有一个存储过程名称,我试图找出是否|。可以使用捕获组来匹配使用此存储过程的方法的名称。
例如,给出了以下代码文件
public static public string GetUser(int user Id)
{
....
StoredProcedure sp = new StoredProcedure("Get_User");
....
}
public static int InsertUser(string sUitterTokenSecret, int nGroupID)
{
....
try
{
StoredProcedure sp = new StoredProcedure("SP_INSERT_USER");
....
}
catch (Exception ex)
{
HandleException(ex);
}
return nInserted;
}
public static bool DeleteUser(int nSiteGuid, bool bLogOut = false)
{
....
StoredProcedure sp = new StoredProcedure("Delete_User");
...
}
我正在尝试查找正在调用SP_INSERT_USER
的方法的名称
所以我用这个
(public.*)(.|\n)*(SP_INSERT_USER)
但是问题是它的匹配会在public static public string GetUser(int user Id)
之前一直..StoredProcedure("SP_INSERT_USER");
出现第一次出现
如何获取存储过程名称之前的第一个public...
?
答案 0 :(得分:1)
public.+?([A-Z].*)\((?:(?!public).|\n)*SP_INSERT_USER
比赛
public static int InsertUser(string sUitterTokenSecret, int nGroupID)
{
....
try
{
StoredProcedure sp = new StoredProcedure("SP_INSERT_USER
并捕获第1组
InsertUser
说明
public.+?
-懒惰地匹配public
的出现和所有内容([A-Z].*)\(
-捕获大写字母的首次出现(方法开始)以及直到括号(
的第一次出现之前的所有后续内容(?:(?!public).|\n)*
-非捕获组,匹配单词public
SP_INSERT_USER
-匹配单词SP_INSERT_USER