gpt4 book ai didi

ruby - 用引号解析键值对的正则表达式

转载 作者:太空宇宙 更新时间:2023-11-03 18:17:35 24 4
gpt4 key购买 nike

我正在尝试使用以下格式使用 Ruby 解析键值表达式:

foo-bar:bar foo:"bar 1""bar 2":"foo 3""bar 2\"var\"":"foo 3"

应该产生:

Key: foo-bar     Value: bar
Key: foo Value: bar 1
Key: bar 2 Value: foo 3
Key: bar 2 "var" Value: foo 3

这可以用正则表达式实现吗?键和值可以是不带引号的字符串没有空格,或带空格的引号字符串。

我有以下内容:

([a-zA-Z0-9\-]+|\"[a-zA-Z0-9\-\s]+)\"\s*\:\s*([a-zA-Z0-9\-]+|\"[a-zA-Z0-9\-\s]+\")

最佳答案

这应该可以解决您的大部分问题:

("(?:\\.|[^"])*"|[^\s]*):\s*("(?:\\.|[^"])*"|[^\s]*)

rubular

一个更详细的选项是:

(?:"((?:\\.|[^"])*)"|([^\s]*)):\s*(?:"((?:\\.|[^"])*)"|([^\s]*))

这将在没有引号的情况下捕获,在 ruby​​ 中它将如下所示:

string = 'foo-bar:bar foo:"bar 1" "bar : 2":"foo \" 3" "bar 2 \"var\"":"foo 3"'

string.scan(/(?:"((?:\\.|[^"])*)"|([^\s]*)):\s*(?:"((?:\\.|[^"])*)"|([^\s]*))/).map(&:compact)
# => [["foo-bar", "bar"], ["foo", "bar 1"], ["bar : 2", "foo \\\" 3"], ["bar 2 \\\"var\\\"", "foo 3"]]

rubular

关于ruby - 用引号解析键值对的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23610868/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com