查找指定函数的字符串文字参数

时间:2018-06-18 19:33:10

标签: c# regex

我有一个名为DataHelper的静态类。它有一些方法,但是所有方法都将字符串文字(存储过程名称)作为参数,如下所示:

DataHelper.ExecuteProc("DBMaster.DatabaseConnections_SelectAll", null, CONN);

我想浏览一个源文件并提取每个调用的字符串部分。 我目前正在使用:

DataHelper.*(?<=")(?:[^"]|"")*(?=")

但这与整个事情相符。有没有办法通过正则表达式来获取此函数的参数列表的字符串部分?

2 个答案:

答案 0 :(得分:2)

您可以使用捕获组或在匹配结果中没有DataHelper.ExecuteProc将其置于后备:

(?<=DataHelper\.ExecuteProc\(")[^\\"]*(?:\\.[^\\"]*)*

查看实时demo here

故障:

  • (?<=开始积极的观察
    • DataHelper\.ExecuteProc\("匹配但不消费
  • )看向后方
  • [^\\"]*(?:\\.[^\\"]*)*匹配双重标记中的字符串

答案 1 :(得分:1)

你可以这样做:

var pattern = "\bDataHelper\..+?\(\"(?<procedure>[^\"]*?)\"";
var result = Regex.Match(input, pattern).Cast<Match>().Select(x=> x.Groups["procedure"].Value).ToList();