2017-03-17 4 views
-1

こんにちは私は特定の文字列の最初のオカレンスを検索し、設定された長さの数字と変更される文字の間の値を取得します。C#RegEx数値と文字の間の値ですか?

Nate Barbettiniのhttps://dotnetfiddle.net/vhkUV5の例を使用すると、私はほとんど必要なことをやってしまいました。それはコンパイルされず、私のRegExが見たことから、私は挑戦的に助けが必要です。

私の例では、3つのPID値すべてではなく、chrome.exeのPID値 "116c"が最初に出現するのを見たいと思います。 1つのPID値を取得する最良の方法は何ですか?

コード:

using System; 
using System.Collections.Generic; 
using System.Text.RegularExpressions; 

public class Program 
{ 
    public static void Main() 
    { 
     var output = @" 
     0a80 6e 6f 74 65 70 61 64 2b 2b 2e 65 78 65 20 20 20 notepad++.exe 
     0a90 50 49 44 3d 31 64 38 63 7c 30 37 35 36 34 0d 0a PID=1d8c|07564.. 
     0aa0 6a 68 69 5f 73 65 72 76 69 63 65 2e 65 78 20 20 jhi_service.ex 
     0ab0 50 49 44 3d 31 38 64 34 7c 30 36 33 35 36 0d 0a PID=18d4|06356.. 
     0ac0 4c 4d 53 2e 65 78 65 20 20 20 20 20 20 20 20 20 LMS.exe 
     0ad0 50 49 44 3d 31 63 36 38 7c 30 37 32 37 32 0d 0a PID=1c68|07272.. 
     0ae0 63 6d 64 2e 65 78 65 20 20 20 20 20 20 20 20 20 cmd.exe 
     0af0 50 49 44 3d 30 66 37 38 7c 30 33 39 36 30 0d 0a PID=0f78|03960.. 
     0b00 63 6f 6e 68 6f 73 74 2e 65 78 65 20 20 20 20 20 conhost.exe 
     0b10 50 49 44 3d 30 62 64 30 7c 30 33 30 32 34 0d 0a PID=0bd0|03024.. 
     0b20 76 63 74 69 70 2e 65 78 65 20 20 20 20 20 20 20 vctip.exe 
     0b30 50 49 44 3d 31 38 30 38 7c 30 36 31 35 32 0d 0a PID=1808|06152.. 
     0b40 63 68 72 6f 6d 65 2e 65 78 65 20 20 20 20 20 20 chrome.exe 
     0b50 50 49 44 3d 31 31 36 63 7c 30 34 34 36 30 0d 0a PID=116c|04460.. 
     0b60 63 68 72 6f 6d 65 2e 65 78 65 20 20 20 20 20 20 chrome.exe 
     0b70 50 49 44 3d 31 36 39 34 7c 30 35 37 38 30 0d 0a PID=1694|05780.. 
     0b80 63 68 72 6f 6d 65 2e 65 78 65 20 20 20 20 20 20 chrome.exe 
     0b90 50 49 44 3d 31 30 62 30 7c 30 34 32 37 32 0d 0a PID=10b0|04272.."; 

     var regex = new Regex(@"chrome.exe[\s].................................................................(.*)........"); 

     var resultList = new List<string>(); 
     foreach (Match match in regex.Matches(output)) 
     { 
      resultList.Add(match.Groups[1].ToString()); 
     } 

     var pid = string.Join(", ", resultList); 

     Console.WriteLine(pid); 
    } 
} 

出力:

116c, 1694, 10b0 

私は任意のヘルプまたはポインタが歓迎されている非常に新しいです。

答えて

0

は、このコードを試してみてください。

var regex = new Regex("chrome\\.exe\\s*.*PID=(.*)\\|"); 

var pid = regex.Matches(output) 
       .Cast<Match>() 
       .Select(match => match.Groups[1].ToString()) 
       .First(); 

あなたは正規表現hereをテストすることができます。

+0

ダミアン、その解決策は美しく動作します!ありがとうございました – user7729373

関連する問題