regex - 使用正则表达式在匹配之前查找第一次出现
问题描述
我试图弄清楚如何在找到匹配项之前匹配第一次出现的模式。给它一些背景:
我有一个 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...
在存储过程名称之前第一次出现?
解决方案
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
推荐阅读
- android - 无论如何在 Chrome 版本的 react-native android WebViews 中显示带有主题标签 (#) 的 html。> 72
- javascript - 未从 Adobe Acrobat 建立到 LDAP 目录的连接
- c# - 如何从数组中删除单个元素
- visual-studio-2010 - 如何在 Windows 10 上安装 Visual Studio 2010 (v100) 平台工具集?
- javascript - 如何在 Firebase 数据库中实现多个 orderByChild 查询
- javascript - 如果 angularjs 1.x 中显示 ng-messages,如何禁用按钮?
- c++ - 如何使 doxygen 包含命名空间成员到组页面
- c++ - 访问使用 def 文件导出的静态变量时崩溃
- javascript - 关闭窗口选项卡
- c++ - 阵列平衡指数的典型误差