我是正则表达的新手,而我所做的阅读并没有让我走得更远。我想要做的是从SQL查询中提取行计数输出。例如,如果下面的任何一个示例都显示为输出,我想要捕获'(',所以' 0',' 92& #39;或任何其他号码。
任何正则表达专家都可以帮助我!
将捕获的输出来自命令行运行.sql文件:
将数据库上下文更改为' mydb'。 ----------- 0(受影响的一行)
将数据库上下文更改为' mydb'。 ----------- 92(受影响1行)
以下是部分正常工作的代码 - 它使用可以修剪的前导空格获取行数...只是不知道这是否是最佳代码。
Process execQuery = new Process();
string output = "";
string argumentsToPass = "-S myhost -d mydb -i + sqlFileToExecute;
execQuery.StartInfo.UseShellExecute = false;
execQuery.StartInfo.RedirectStandardOutput = true;
execQuery.StartInfo.FileName = "sqlcmd";
execQuery.StartInfo.Arguments = argumentsToPass;
execQuery.Start();
execQuery.WaitForExit();
output = execQuery.StandardOutput.ReadToEnd();
Match match = Regex.Match(output, @"\s+\d+");
答案 0 :(得分:1)
这样简单的事情会起作用:
(\d{1,})(\()
这里有两个匹配的组,第一个将返回您感兴趣的数字。此模式基本上匹配位于左侧开放括号左侧的任何数字。
以下是代码中的用法:
regex.match(myOutputString, "(\d{1,})(\()").groups(1).tostring
如果您正在学习,请检查一下:
答案 1 :(得分:0)
对于某些方向,我喜欢这张c#regex表http://www.mikesdotnetting.com/Article/46/CSharp-Regular-Expressions-Cheat-Sheet
用简单的英语,你的目标应该是找到最后一个连字符( - ),然后抓住任何数字直到你看到一个左括号。
祝你好运!