我想从PnPID获取供应商ID和设备ID的值,例如,我想从下面的字符串中获取供应商ID“8086”和设备ID“24D5”。
pci\ven_8086&dev_24D5&subsys_02871014
我的代码是(在C#中)
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);
}
但这并没有为我删除前缀“dev_”,也无法匹配包含十六进制数字的设备ID。什么是正确的表达方式?
答案 0 :(得分:3)
您必须使用括号创建一个组:
new Regex(@"dev_(\d+)", RegexOptions.IgnoreCase);
然后在第二组中,您将只获得数字(第一个总是为整个正则表达式匹配的字符串保留)。
要匹配十六进制值,请使用:
new Regex(@"dev_([0-9a-f]+)", RegexOptions.IgnoreCase);
要在一个正则表达式中匹配 - 设备和供应商 - ,请使用:
new Regex(@"ven_([0-9a-f]+)&dev_([0-9a-f]+)", RegexOptions.IgnoreCase);