仅出于比较目的,这是一个正则表达式似乎也可以解决该问题:
([^=]+) # key= # equals is how we tokenise the original string([^=]+) # value(?:,|$) # value terminator, either comma or end of string
这里的技巧是限制您在第二组中捕获的内容。
.+吞下
=符号,这是我们可以用来区分键和值的字符。完整的正则表达式不依赖任何回溯(因此,如果需要,它应该与re2之类的东西兼容),并且可以在abarnert的示例中使用。
用法如下:
re.findall(r'([^=]+)=([^=]+)(?:,|$)', 'foo=bar,breakfast=spam,eggs,blt=bacon,lettuce,tomato,spam=spam')
哪个返回:
[('foo', 'bar'), ('breakfast', 'spam,eggs'), ('blt', 'bacon,lettuce,tomato'), ('spam', 'spam')]
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)