正则表达式:忽略字段之间的空格

时间:2013-08-16 02:27:22

标签: c# regex

我遇到了一个有趣的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

如果有人可以帮助修复我的正则表达式以便与“中间”空格不匹配,或提供一种超级的替代方法。

再次感谢。

1 个答案:

答案 0 :(得分:4)

尝试使用此正则表达式:\s(?=\w+:)