Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby gsub指定字符之前的多行字符串开头的所有字符_Ruby - Fatal编程技术网

Ruby gsub指定字符之前的多行字符串开头的所有字符

Ruby gsub指定字符之前的多行字符串开头的所有字符,ruby,Ruby,我有一个大的多行字符串,它是HTML页面中的脚本元素,我想从中提取一些数据 有一行有我需要的数据: var skuProducts=[{"skuAttr":"200007763:201336100;491:200004763#145cm","skuPropIds":"201336100,200004763","skuVal":{"actSkuBulkCalPrice":"313.64"}}]; 我只需要第一个[和最后一个]之间的部分,让我们先创建您的“多行字符串”,以便测试: > pag

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

有一行有我需要的数据:

var skuProducts=[{"skuAttr":"200007763:201336100;491:200004763#145cm","skuPropIds":"201336100,200004763","skuVal":{"actSkuBulkCalPrice":"313.64"}}];
我只需要第一个
[
和最后一个
]

之间的部分,让我们先创建您的“多行字符串”,以便测试:

> 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

它起作用了。万岁。

编写输入和所需输出的示例,它以if(!window.runParams){window.runParams={};}window.runParams.minPrice=“440.2”开头;window.runParams.maxPrice=“577.6”;然后我需要javascript结果数组进一步向下,从这一行开始var sku products=[{很多javascript“name”:“value”pairs…}}]因此,我需要去掉下面的所有内容,包括]javascript结果数组后面的多行内容看起来像这个var GaData={pageType:“product”,productId:“en32959852599”,总值:“330.15美元”};将此数据添加到您的问题中这看起来不像Ruby。您能解释一下regext吗regexp只捕获了
var skuProducts=[
]之间的所有内容