0

私は正規表現が初めてで、これまで読んだだけでは十分に理解できませんでした。私がやろうとしているのは、SQL クエリから行数の出力を抽出することです。たとえば、以下の例のいずれかが出力として表示される場合、「(」の左側の値を取得したいので、「0」、「92」、またはその他の数値を取得します。

そこにいる正規表現の専門家が私を助けてくれませんか!

キャプチャされる出力は、コマンド ラインから .sql ファイルを実行したものです。

データベース コンテキストを「mydb」に変更しました。----------- 0(影響を受ける行は 1 行)

データベース コンテキストを「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+");
4

2 に答える 2

1

これが機能するのと同じくらい簡単なもの:

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

ここには 2 つの一致するグループがあり、最初のグループは関心のある数値を返します。このパターンは基本的に、開き括弧の左側にある任意の数値に一致します。

コードでの使用法は次のとおりです。

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

学習している場合は、これもチェックしてください。

正規表現をテストするためのオンライン ツール

于 2013-04-29T15:48:59.780 に答える
0

いくつかの方向性については、このC#正規表現シートが大好きですhttp://www.mikesdotnetting.com/Article/46/CSharp-Regular-Expressions-Cheat-Sheet

平易な英語では、あなたの目標はおそらく最後のハイフン (-) を見つけて、開き括弧が見えるまで数字をつかむことです。

幸運を!

于 2013-04-29T15:33:22.573 に答える