我有一个很大的多行字符串,它是HTML页面中的脚本元素,我想从中提取一些数据。
有一行包含我需要的数据:
var skuProducts=[{"skuAttr":"200007763:201336100;491:200004763#145cm","skuPropIds":"201336100,200004763","skuVal":{"actSkuBulkCalPrice":"313.64"}}];
我只需要前[
和后]
之间的部分。
答案 0 :(得分:0)
首先创建您的“多行字符串”,以便我们进行测试:
> page = %(hello\nvar skuProducts=[{"skuAttr":"200007763:201336100;491:200004763#145cm","skuPropIds":"201336100,200004763","skuVal":{"actSkuBulkCalPrice":"313.64"}}];\nworld\n)
好吧,现在让我们使用正则表达式提取数据:
> skudata = page[/var skuProducts=\[(.+?)\];/, 1]
> puts skudata.inspect
{"skuAttr":"200007763:201336100;491:200004763#145cm", "skuPropIds":"201336100,200004763","skuVal":{"actSkuBulkCalPrice":"313.64"}}
是的,看起来不错,我们可能可以将其读取为JSON:
> require 'json'
> data = JSON.load(skudata)
> puts data["skyPropIds"]
201336100,200004763
有效。欢呼。