我有一个名为DataHelper的静态类。它有一些方法,但是所有方法都将字符串文字(存储过程名称)作为参数,如下所示:
DataHelper.ExecuteProc("DBMaster.DatabaseConnections_SelectAll", null, CONN);
我想浏览一个源文件并提取每个调用的字符串部分。 我目前正在使用:
DataHelper.*(?<=")(?:[^"]|"")*(?=")
但这与整个事情相符。有没有办法通过正则表达式来获取此函数的参数列表的字符串部分?
答案 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();