正则表达式提取2组仅产生一个匹配

时间:2015-07-19 13:50:43

标签: python regex

正则表达式的新手。 考虑您有以下文本结构: "hello_1:45||hello_2:67||bye_1:45||bye_5:89||.....|| bye_last:100"等等 我想构建一个字典,将字符串值作为键,将十进制数作为dict值 我试图用this nice tool来检查我的概念 我写了我的正则表达式:

(\w+):(\d+)

只得到一个匹配 - >字符串中的第一个:hello_1:45
我也尝试了类似的东西:
.*(\w+):(\d+).*
但也不好,有什么想法吗?

2 个答案:

答案 0 :(得分:2)

您应该使用g(全局)修饰符来获取所有匹配项而不是停止到第一个匹配项。在python中,您可以使用re.findall函数来获取所有匹配项。查看示例here

答案 1 :(得分:0)

您只能通过分割功能实现此目的。

s = "hello_1:45||hello_2:67||bye_1:45||bye_5:89"
print {i.split(':')[0]:i.split(':')[1] for i in s.split('||')}

如果要将值部分转换为int,请尝试此操作。

print {i.split(':')[0]:int(i.split(':')[1]) for i in s.split('||')}

print {i.split(':')[0]:float(i.split(':')[1]) for i in s.split('||')}