Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
一直在努力,试图为自己弄清楚。基本上我正在接受用户输入,它可以有一个像这样的关键字/值结构: Blah abc:def lah:123!dfj blah:22:34 最终应该是 ('abc', 'def', 'lah':'123!dfj', 'blah':'22:34')
Blah abc:def lah:123!dfj blah:22:34
('abc', 'def', 'lah':'123!dfj', 'blah':'22:34')
目前我有(.[^: ]+):(.[^ ]+),但这只是获得第一个值。我在这里遗漏了一些明显的东西吗?
(.[^: ]+):(.[^ ]+)
您不能期望从正则表达式中得到超过一对,因为现在一组括号可以返回多个匹配项。即使你做了类似的事情(([^:]+):([^ ]+) ?)*(这将匹配你的字符串),里面的括号集也只会返回一个匹配项(最后一个)。
(([^:]+):([^ ]+) ?)*
如果你想获得更多的配对,你不能通过改变正则表达式来做到这一点,你可以通过一个函数多次应用你的正则表达式来查找所有匹配项,就像scan在 Ruby 中一样。
scan