正在努力解决这个问题,试图为自己解决这个问题。基本上我正在接受用户输入,可以有这样的关键字/值结构:
Blah abc:def lah:123!dfj blah:22:34
应该最终成为
('abc', 'def', 'lah':'123!dfj', 'blah':'22:34')
目前我有(.[^: ]+):(.[^ ]+)
,但这只是第一个值。我错过了一些明显的东西吗?
答案 0 :(得分:3)
你不能期望从正则表达式获得多个对,因为现在有一组括号可以返回多个匹配。即使您执行类似(([^:]+):([^ ]+) ?)*
(与您的字符串匹配)的操作,内部括号集也只返回一个匹配(最后一个)。
如果你想获得更多对,你不是通过改变正则表达式来实现的,你可以通过多次应用正则表达式的函数来查找所有匹配项,例如scan
在Ruby中。