gsub从多行字符串开始的所有字符,在指定字符之前

时间:2019-02-05 01:24:10

标签: ruby

我有一个很大的多行字符串,它是HTML页面中的脚本元素,我想从中提取一些数据。

有一行包含我需要的数据:

var skuProducts=[{"skuAttr":"200007763:201336100;491:200004763#145cm","skuPropIds":"201336100,200004763","skuVal":{"actSkuBulkCalPrice":"313.64"}}];

我只需要前[和后]之间的部分。

1 个答案:

答案 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

有效。欢呼。