使用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;
}
答案 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 tester和this simple Regex cheat sheet添加书签。在这种情况下帮助很多。