2013-12-15 190 views
2

使用C#,以下正则表达式从示例文本数据中捕获我需要的数据。但是,这是使用组。 我只需要属性的值(即0x05AC),如果我想通过match.Value访问属性,那么正则表达式看起来会如何?换句话说,我只想从数据字符串中捕获Model的属性值。 如果有人能解释这个解决方案,那就太好了。正则表达式捕获

感谢

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; 
+0

为什么会是这样的好事?你有可读的东西 - 改变它可以很容易使它不可读。那就是 - 你要求的价值是什么? – Oded

+0

为什么在使用字符串操作很容易实现的简单任务上使用正则表达式? –

+0

我有一个巨大的文件,其中包含许多像上面那样的条目,并且像上面那样的每个属性集可以不同于其他(不同的顺序和不同的属性集)。除了每组属性之间的分隔符之外,文件中没有任何内容是标准的。解析它将是完整的地狱,我也无法更改文件。 – Tsef

回答

0
var reg =new Regex(@"Model[^:]*:\s*(?<model>0x[A-F0-9]+)"); 
var match=reg.Match(data); 
var result=match.Groups["model"].Value; 
+0

您可能想使用'if(match.Success){...}'。 –

+0

我想这比使用索引更好,但它仍然使用组... – Tsef