Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 正则表达式捕获_C#_Regex - Fatal编程技术网

C# 正则表达式捕获

C# 正则表达式捕获,c#,regex,C#,Regex,下面的正则表达式使用C#从示例文本数据中捕获我需要的数据。然而,这是使用组。 我只需要属性的值(即0x05AC),如果我想通过match.value?访问属性,正则表达式会是什么样子,换句话说,我只想从数据字符串中捕获模型的属性值。 如果有人能解释解决方案,那就太好了 谢谢 string data = @" ID : 40 Name : 2015 Model : 0x05AC Product

下面的正则表达式使用C#从示例文本数据中捕获我需要的数据。然而,这是使用组。 我只需要属性的值(即0x05AC),如果我想通过match.value?访问属性,正则表达式会是什么样子,换句话说,我只想从数据字符串中捕获模型的属性值。 如果有人能解释解决方案,那就太好了

谢谢

string data = @"
ID                  : 40
Name                : 2015
Model               : 0x05AC
Product             : Generic
Number              : 0x12A8";
var match = Regex.Match(data, @"Model[ ]*:[ ]*(0x.+\S)");
var result = match.Groups[1].Value;
var reg=new Regex(@“Model[^:::*:\s*(?0x[A-F0-9]+));
变量匹配=规则匹配(数据);
var result=match.Groups[“model”].Value;

为什么这是件好事?你有一些可读的东西可以工作-改变它很容易使它不可读。也就是说,你所要求的东西有什么价值?为什么要在这么简单的任务上使用正则表达式,而这个任务可以通过字符串操作轻松实现?我有一个巨大的文件,其中包含许多类似于上面的条目,并且像上面的一组属性可以不同于另一组(不同的顺序和不同的属性集)。除了每组属性之间的分隔符外,文件中没有其他内容是标准的。解析它将是一个地狱,我也不能更改文件。这是否也意味着总是有
Model
后跟15个空格、一个冒号、另一个空格,然后是
0x..
?你也许可以使用正向的lookback。是的,但是模型属性并不总是存在。你可能想使用
if(match.Success){…}
。我想这比使用索引要好,但它仍然使用组…
var reg =new Regex(@"Model[^:]*:\s*(?<model>0x[A-F0-9]+)");
var match=reg.Match(data);
var result=match.Groups["model"].Value;