我遇到了一个有趣的C#字符串拆分问题。我有以下数据,我需要将其分成键/值对。问题是数据本身并没有很好地界定空间字符。
示例数据:
Somefield1:500 Somefield2:atextfield Somefield3:a text field with spaces Somefield4:102 Somefield5whichisblank: somefeild6:m0redata somefeild7:(1,2,3 5)
我尝试使用的方法使用正则表达式分割匹配分隔空格字符:
var lineOfText = @"Somefield1:500 Somefield2:atextfield Somefield3:a text field with spaces Somefield4:102 Somefield5whichisblank: somefeild6:m0redata somefeild7:(1,2,3 5)"
foreach (string match in Regex.Split(lineOfText, @"\s(?=[^\)]*(?:\(|$))").Where(s => s != String.Empty))
{
// Split into key / value pairs here
}
问题在于我的正则表达式。我认为解决方案很接近,但是它们在字段之间的当前匹配空间。 gskinner example here。
如果有人可以帮助修复我的正则表达式以便与“中间”空格不匹配,或提供一种超级的替代方法。
再次感谢。
答案 0 :(得分:4)
尝试使用此正则表达式:\s(?=\w+:)