使用RegEx提取字符串值的最小模式

时间:2010-11-23 14:57:58

标签: c# regex extraction

我正在尝试使用正确的模式实例化正则表达式,以便只获取正确的字符串值。我的文本文件有:

Comment ID : 1234.5

我希望得到正确的价值如下:

1234.5

正确的正则表达式模式是什么?

这是我到目前为止所拥有的

new Regex(@"^Comment ID\s*:\s*(?<comment_id>\w+)", RegexOptions.Multiline | RegexOptions.IgnoreCase); 

但是这也带来了不需要的字符串“评论ID”

是否可以不使用群组标记<comment_id>

4 个答案:

答案 0 :(得分:1)

您不必使用组名 - 但是您必须通过索引引用它们。 如果字符串的左侧部分不能包含“:”,那么正则表达式可以是:

^[^:]+:\s*(.*?)\s*$

此外,您可以使用intance String.Split()方法:

"abc : def".Split(new[] { ':' }, 2)

答案 1 :(得分:0)

如果您不关心:可以使用的剩余部分:

"^.*:\s*(?<comment_id>\w+)"

你也不需要使用RegexOptions这个,因为没有字符串可以忽略

的情况

答案 2 :(得分:0)

(?&lt; = Comment ID:\ s *)[^ \ s] +

答案 3 :(得分:0)

您提供的正则表达式"^Comment ID\s*:\s*(?<comment_id>\w+)"与点

后的数字不匹配

尝试使用此:  (?!^Comment ID\s*:\s*)(?<comment_id>\d+\.*\d*)

您还可以将注释ID更改为任何单词或\ w +