如何创建正则表达式来解析此字符串

时间:2016-05-17 14:52:54

标签: regex

如何制作正则表达式来解析此字符串?

"desc: random text string, sender: James, se-status: red, problem-field: I'm a problem field, I'm a problem field, action: runs, target: John, ta-status: blue, status-apply: red, lore: lore ipsum dolor sit amet"

我想要获得密钥和值的组。请注意“问题字段”中有引号。组应该获取密钥,然后在下一个密钥名称之前找到最后一个逗号。

这是一个示例字符串。其他字符串可以具有不同的字段名称,因此正则表达式不应与senderaction等特定字段名称匹配。

预期结果组:

1. "desc"
2. "random text string"
3. "sender"
4. "James"
5. "se-status"
6. "red"
7. "problem-field"
8. "I'm a problem field, I'm a problem field"
9: "action"
10."runs"
11."target"
12."John"
13."ta-status"
14."blue"
15."status-apply"
16."red"
17."lore"
18."lore ipsum dolor sit amet"

请注意问题字段应仅为1个结果

这个问题始于我在这里尝试改进我对这个问题的回答:JS: deserializing a string with a JSON-like structure

我做了一个经典的for,然后用户Redu创建了一个基于正则表达式的答案。然而我不喜欢因为必须修复字段名称。所以我尝试创建一个带有捕获组的正则表达式,然后返回检查最后一个逗号,但我很快发现我的正则表达式技能还没有那么远(还)。所以我想在创建这个问题时,我们可以在那里学习正则表达式大师。

1 个答案:

答案 0 :(得分:1)

这个正则表达式可以帮助你:

([\w-]+): ([\w,\s']+)(?:,|$)

Demo

它捕获用:

分隔的每个键/值