如何使用Ruby解析给定字符串的正确键和值

时间:2013-03-19 14:31:07

标签: ruby regex parsing

我有一个清单:

key1:this is an{example{of an example}I like} key2:this is another example key3: this is secondary{example{of an example}}

我需要分开键并按差异比较键的值,所以我想得到的结果是:

{
  :key1 => 'this is an [example[of an example]I like]',
  :key2 => 'this is another example',
  :key3 => 'this is secondary[example[of an example]]'
}

Ruby或Regex可能会出现类似这样或类似内容吗?

1 个答案:

答案 0 :(得分:0)

你去了:

def parse_into_hash(s)
  keys = s.scan(/\w+:/.map{|k| k.chomp(":")}
  values = s.split(/\w+:/).select(&:present?)
  Hash[keys.zip values]
end

这不是防弹。如果您在值中有冒号或者任何值是空字符串,它可能会失败,但它适用于您的示例,并且应该让您开始。如果需要,可以使其更加强大。