2014-11-20 179 views
0

我想解析一個字符串,其中包含一串值代表不同的方式。以下是我迄今爲止:Ruby正則表達式文本解析

acc=acc.scan(/"([achievement|stat]).([\w]+.)*":[0-9]+/).flatten 

這對於工作:

  {"stat.crouchOneCm":2392,"stat.craftItem.minecraft.bed":1,"stat.craftItem.minecraft.wooden_pickaxe":1 

我得到(正是我期望的那樣):

s 
crouchOneCm 
2392 
s 
bed 
1 
s 
wooden_pickaxe 
1 

,但這樣的事情不工作,除了上面的東西:

"achievement.exploreAllBiomes":{"value":0,"progress":["Desert","DesertHills","Ocean","Beach","Savanna Plateau M","Savanna","Savanna Plateau","River"]},"stat.craftItem.minecraft.iron_pickaxe":1," 

我的目標是這樣的:

a 
exploreAllBiomes 
["Desert","DesertHills","Ocean","Beach","Savanna Plateau M","Savanna","Savanna Plateau","River"] 
s 
iron_pickaxe 
1 

任何人有一個想法?

+3

這看起來像JSON,那麼爲什麼不使用一個真正的解析器? – August 2014-11-20 17:51:38

+0

......因爲我是白癡:)).... derp – Rilcon42 2014-11-20 18:00:19

+0

如果不是這樣,請回答並關閉你的問題。 – Felix 2014-11-20 19:37:16

回答

0

唉...的例子字符串是不完整的,但你處理JSON ...

require 'json' 

hash = JSON['{"stat.crouchOneCm":2392,"stat.craftItem.minecraft.bed":1,"stat.craftItem.minecraft.wooden_pickaxe":1}'] 
hash 
# => {"stat.crouchOneCm"=>2392, 
#  "stat.craftItem.minecraft.bed"=>1, 
#  "stat.craftItem.minecraft.wooden_pickaxe"=>1}