0

我有一个清单:

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 是否可以实现类似或类似的功能?

4

1 回答 1

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

这不是防弹的。如果值中有冒号或任何值是空字符串,它可能会失败,但它适用于您的示例,并且应该可以帮助您入门。如果需要,您可以使其更加健壮。

于 2013-03-19T15:17:32.643 回答