我具有以下(键/值列表)结构

字段:值值值字段:值值值

classType:* type type2 ns.grrr.test3 _test4 * name_space.classType:grrr.test5 test6

我希望能够将字符串解析成组

classType-字段


类型-值
2型
ns.grrr.test3
_test4


name_space.classType


grrr.test5
测试6


我的尝试之一

^(?<field>((\w+\.?)+)\:)(?<value>(((\w+\.?)+)\s?)+)


在表达式中,以上内容不起作用。我可以使某些部分正常工作,但不能使用所需的组

还尝试了:

(?<value>((?!\:)((\w+\.?)+\:?)))


在这里我尝试确保值组不会意外地包含一个字段
没有特殊字符,只有:

a-z A-Z 0-9 _。 --

任何帮助将不胜感激。

更新资料

越来越近,这将正确提取所有值,除了最后一项“ test6” ...

任何帮助都欢迎:)

(感谢@ rfeague对此的投入)。

((?<field>(\w+\.?)+)[:]((?<value>(\w+\.?)+)\s)+)


戴夫

最佳答案

这一切都匹配

(?<field>[^\s]+?):((?<value>[^\s]+)\s?)+

关于c# - 正则表达式,负后缀,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12667932/

10-09 19:57