正则表达式以匹配逗号分隔的key = value列表,其中value可以包含逗号

正则表达式以匹配逗号分隔的key = value列表,其中value可以包含逗号,第1张

正则表达式以匹配逗号分隔的key = value列表,其中value可以包含逗号

仅出于比较目的,这是一个正则表达式似乎也可以解决该问题:

([^=]+)    # 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')]


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5601988.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存