C# 用正则表达式模式提取键值对

C# 用正则表达式模式提取键值对,c#,regex,datetime,C#,Regex,Datetime,我试图从这样的字符串中获取键值对 TestKeyAAA:Hello World TestKeyBBB:987654321 TestKeyCCC:一个带日期时间的长句2016-09-29T20:15:11更多文本TestKeyDDD:123456789 想收到这样的礼物吗 TestKeyAAA=“你好,世界” TestKeyBBB=“987654321” TestKeyCCC=“一个带有日期时间的长句2016-09-29T20:15:11更多文本” TestKeyDDD=“123456789” 我

我试图从这样的字符串中获取键值对

TestKeyAAA:Hello World TestKeyBBB:987654321 TestKeyCCC:一个带日期时间的长句2016-09-29T20:15:11更多文本TestKeyDDD:123456789

想收到这样的礼物吗

TestKeyAAA=“你好,世界”
TestKeyBBB=“987654321”
TestKeyCCC=“一个带有日期时间的长句2016-09-29T20:15:11更多文本”
TestKeyDDD=“123456789”

我使用的模式是

(.+?):(.+?)(?=(?:[^\s]+:)|(?:$)

除了键TestKeyCCC的值外,它工作正常。问题是日期中的“错误”

这些键只包含
[A-Z]、[A-Z]、。和/

我试着用下面的模式

([A-Za-z\.]+?):(.+?)(?=(?:[^\s]+:)|(?:$)


但这不适用于。我做错了什么?

这似乎适用于您的测试场景

(?<key>[A-Za-z\.,/]+?):\s(?<value>.+?)(?=\s[A-Za-z\.,/]+?:|$)
(?[A-Za-z\,/]+?):\s(?。+?)(?=\s[A-Za-z\,/]+?:|$)

我认为在匹配以下内容时需要排除数字和空白:


编辑以说明问题中指定的所有关键字符。这些关键字符不包含空格和数字。它们包含字符A-Z、A-Z、“.”、“/”。以下是一些“位置”、“C/F”和“数值”示例。您可以在正则表达式的字符范围内加上这些特殊引号,似乎有效。
([A-Za-z\.]+?):(.+?)(?=(?:[^\s0-9]+:)|(?:$))