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

本文关键字:键值对 提取 模式 正则表达式 | 更新日期: 2023-09-27 18:09:36

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

TestKeyAAA: Hello World TestKeyBBB: 987654321 TestKeyCCC: A long sentence with a date time in it 2016-09-29T20:15:11 some more text TestKeyDDD: 123456789

希望收到这样的配对

TestKeyAAA = „Hello World“ TestKeyBBB = „987654321“ TestKeyCCC = „A long sentence with a date time in it 2016-09-29T20:15:11 some more text“ TestKeyDDD = „123456789“

我使用的模式是这个

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

它工作得很好,除了关键TestKeyCCC的值。问题是日期中的":"。

键只包含[A-Z],[a-z],. and /

我尝试用下面的模式

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

但这不起作用。我做错了什么?

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

我认为在匹配":"

时需要排除数字和空白。
([A-Za-z'.]+?):(.+?)(?=(?:[^'s0-9]+:)|(?:$))

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

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