1

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

因此:

已知字段名称:值

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

我发现了许多类似的问题,但没有一个能真正为我指明解决这个问题的方向。

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

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

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

1 回答 1

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 的超棒正则表达式测试器这个简单的正则表达式备忘单加入书签。对这种情况有很大帮助。

于 2012-11-06T17:15:56.367 回答