python - "a:b"的正则表达式

标签 python regex

一直在努力,试图自己弄清楚。基本上我正在接受用户输入,它可以有一个关键字/值结构,如下所示:
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/

相关文章:

python - 嵌入到 IPython 后,您可以指定要运行的命令吗?

python - 无法创建 Django ValueError 对象,因为数据未验证

c# - 结合两个正则表达式进行 ASP.NET MVC 数据注释

python - 如何在 python 中将集合转换为整数?

python - 在没有 itertools 的情况下使用 python 进行笛卡尔积

python - 将变量从 Python GUI 传递到 PowerShell

regex - 避免使用正则表达式的 Twitter 配置文件名称 (@Profile)

javascript - 用 jquery/javascript 替换数字和符号

排除所有数字的正则表达式

正则表达式匹配第一次出现之前和最接近字符串