正则表达式为冒号后字段的命名值

时间:2012-11-06 17:10:17

标签: c# regex

使用c#我试图使用正则表达式来获取冒号后出现的一段文本的值。我知道字段名称,但是后面的冒号位于可变位置。该值将在下一个空格处结束。

因此:

KnownFieldName:Value

然后我想将值放入一个组中。

我发现了许多类似的问题,但没有一个问题实际上指向了解决这个问题的方向。

这是更大的代码片段的一部分,但基本上它适合这里:

     foreach (var v in fieldsToParse)
                {
                    var match = Regex.Match(line, v.pattern, RegexOptions.IgnorePatternWhitespace);

                    if (match.Success)
                        v.value = match.Groups[v.name].Value;
                }   

1 个答案:

答案 0 :(得分:0)

您正在寻找的正则表达式应该是(?<knownfieldname>[a-zA-Z]+)(\s+):(\s+)(?<value>[a-zA-Z]+)knownfieldname(\s+):(\s+)(?<value>[a-zA-Z]+)

这假设KnownFieldName和Value当然都只是字母字符。如果数字可以进入它,你可能还想在范围中添加0-9,或者如果除了空格之外的任何东西都非常有效,我猜你可以使用\S通配符。

编辑以合并可变数量的空格。另外,根据以下评论,您可以考虑为Derek Slager's awesome Regex testerthis simple Regex cheat sheet添加书签。在这种情况下帮助很多。