一直在努力,试图自己弄清楚。基本上我正在接受用户输入,它可以有一个关键字/值结构,如下所示:
Blah abc:def lah:123!dfj blah:22:34
最终应该是
('abc', 'def', 'lah':'123!dfj', 'blah':'22:34')
目前我有 (.[^: ]+):(.[^ ]+)
,但这只是获取第一个值。我在这里遗漏了一些明显的东西吗?
最佳答案
您不能指望从正则表达式中获得超过一对,因为现在可以通过一组括号返回多个匹配项。即使您执行 (([^:]+):([^ ]+) ?)*
之类的操作(这将匹配您的字符串),内部括号组也只会返回一个匹配项(最后一个)。
如果你想得到更多的对,你不能通过改变正则表达式来实现,你可以通过多次应用你的正则表达式来找到所有匹配的函数来实现,比如 scan
在 Ruby 中。
关于python - "a:b"的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12830829/