正则表达式从SQL查询输出获取/存储行计数

时间:2013-04-29 15:27:19

标签: c# regex

我是正则表达的新手,而我所做的阅读并没有让我走得更远。我想要做的是从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+");

2 个答案:

答案 0 :(得分:1)

这样简单的事情会起作用:

(\d{1,})(\()

这里有两个匹配的组,第一个将返回您感兴趣的数字。此模式基本上匹配位于左侧开放括号左侧的任何数字。

以下是代码中的用法:

regex.match(myOutputString, "(\d{1,})(\()").groups(1).tostring

如果您正在学习,请检查一下:

Online tool for testing Regular Expressions

答案 1 :(得分:0)

对于某些方向,我喜欢这张c#regex表http://www.mikesdotnetting.com/Article/46/CSharp-Regular-Expressions-Cheat-Sheet

用简单的英语,你的目标应该是找到最后一个连字符( - ),然后抓住任何数字直到你看到一个左括号。

祝你好运!