C# 使用正则表达式提取字符串值的最小模式

C# 使用正则表达式提取字符串值的最小模式,c#,regex,extraction,C#,Regex,Extraction,我试图用正确的模式实例化一个正则表达式,以便只获取字符串的正确值。我的文本文件有: Comment ID : 1234.5 我想得到正确的值,如下所示: 1234.5 正确的正则表达式模式是什么 这是我到目前为止的资料 new Regex(@"^Comment ID\s*:\s*(?<comment_id>\w+)", RegexOptions.Multiline | RegexOptions.IgnoreCase); newregex(@“^Comment ID\s*:\s

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

Comment ID : 1234.5
我想得到正确的值,如下所示:

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

这是我到目前为止的资料

new Regex(@"^Comment ID\s*:\s*(?<comment_id>\w+)", RegexOptions.Multiline | RegexOptions.IgnoreCase); 
newregex(@“^Comment ID\s*:\s*(?\w+”),RegexOptions.Multiline | RegexOptions.IgnoreCase);
但这也带来了不需要的字符串“Comment ID”


是否可以不使用组标记

如果您不关心
的剩余内容,您可以使用:

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

对于这一个,您也不需要使用
RegexOptions
,因为如果您不关心
的剩余内容,则没有字符串可以忽略的大小写:
您可以使用:

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

对于这一个,您也不需要使用
RegexOptions
,因为没有字符串可以忽略的大小写,您不必使用组名,但是您必须通过索引引用它们。 如果字符串的左侧部分不能包含“:”,则正则表达式可以是:

^[^:]+:\s*(.*?)\s*$
此外,还可以使用intance String.Split()方法:


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

^[^:]+:\s*(.*?)\s*$
此外,还可以使用intance String.Split()方法:

(?(?您提供的正则表达式“^Comment ID\s*:\s*(?\w+)”与点后的数字不匹配

尝试使用以下方法:
(?!^注释ID\s*:\s*)(?\d+\.*\d*)

此外,您还可以将注释ID更改为任意单词或\w+/p>您提供的正则表达式“^Comment ID\s*:\s*(?\w+)”与点后的数字不匹配

尝试使用以下方法:
(?!^注释ID\s*:\s*)(?\d+\.*\d*)


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

事实上,左侧部分始终是固定的(固定单词),如“注释ID”。它就像一个字段名。因此,
*:
将匹配所有内容,包括
,并将执行您需要的操作。确实,左侧部分始终是固定的(固定单词),如“注释ID”。它就像一个字段名。因此,
*:
将匹配所有内容,包括
,并且如果在
字符上进行拆分,则可以执行所需操作,而无需将其放入数组中。拆分对于
字符
s.Matt是可变的,而不是在重载中指定count参数。如果在
char
您不需要将其放入数组中。对于
char
s.Matt,拆分是可变的,而不是在可以指定count参数的重载中。很好!这也有效:''new Regex(@“Comment\sID\s:\s(?\d+),RegexOptions.IgnoreCase);''Nice!这也有效:''new Regex(@“Comment\sID\s:\s(?\d+),RegexOptions.IgnoreCase);´