2011-11-15 10 views
3

ベンダーIDとデバイスIDの値をPnPIDから取得したいとします。たとえば、下の文字列からベンダーID「8086」とデバイスID「24D5」を取得したいとします。PnPIDを解析するための正規表現

pci\ven_8086&dev_24D5&subsys_02871014 

私のコードは

Regex rx = new Regex(@"dev_\d+", RegexOptions.IgnoreCase); 
string text = @"pci\ven_8086&dev_2425&subsys_02871014"; 
MatchCollection matches = rx.Matches(text); 
foreach (Match match in matches) 
{ 
    Console.WriteLine(watch); 
} 

(C#で)である。しかし、これは私のために接頭辞「DEV_」を削除しません、それはhexdecimal数字が含まれているデバイスIDを一致させることはできません。正しい表現は何ですか?

答えて

3

あなたは括弧を使用してグループを作成する必要があります。

new Regex(@"dev_(\d+)", RegexOptions.IgnoreCase); 

続いて第二のグループにあなただけの数字を取得します(最初は常に全体の正規表現にマッチしている文字列用に予約されています)。必要とされるものの

new Regex(@"ven_([0-9a-f]+)&dev_([0-9a-f]+)", RegexOptions.IgnoreCase); 
+0

+1非常に良い説明: - - デバイスとベンダー1つの正規表現、使用中

new Regex(@"dev_([0-9a-f]+)", RegexOptions.IgnoreCase); 

の両方に一致するには:hexdecimal値の使用を一致させるために

。 –

+0

@Lievenありがとうございました。 :-) – hsz

+0

接頭辞「dev_」についてはもう一度やり直してください:) – kennyzx

関連する問題