1

我有一个脚本可以打开对服务器的请求并获取 javascript 输出。

此输出如下所示:

html = new Array();mark = new Array();html.push('html 标签(我想要的东西)more html');mark.push(new Obj(-12.1231231, -12.12312312312));html.push( 'html 标签(我想要的东西)more html');mark.push(new Obj(-12.1231231, -12.12312312312));html.push('html 标签(我想要的东西)more html');mark.push(new Obj(-12.1231231, -12.12312312312));html.push('html 标签(我想要的东西)more html');mark.push(new Obj(-12.1231231, -12.12312312312));html.push('html 标签(我想要的东西)more html');mark.push(new Obj(-12.1231231, -12.12312312312));OtherStuf.idontcare(new Object(-16.630495852614, -49.264667191591), 13);

我想创建一个正则表达式来接受所有内容:(something i want)和数字new Obj(-12.1231231, -12.12312312312),所以在这一部分:

html.push('html 标签(我想要的东西)more html');mark.push(new Obj(-12.1231231, -12.12312312312))

我只想得到:

(something i want)
-12.1231231
-12.12312312312

但这适用于我找到的每个地方。

我创建了这个正则表达式来获取所有内部内容

/^html = new Array\(\);mark = new Array\(\);(.*)OtherStuf.idontcare\(new Object\([\+\-\.0-9]*, [\+\-\.0-9]*\), [\d]*\);$/

但现在我有点卡住了。我看不到任何获取我需要的信息的方式。

我怎样才能做到这一点?

用我的正则表达式和我需要解析的 javascript 示例的要点:https ://gist.github.com/NicosKaralis/5571240

4

1 回答 1

0

单个正则表达式无法处理您想要的。

我建议您先拆分成块,然后在每个块上运行正则表达式:

output.split(/html\.push/).each do |block|
  # grab "something i want" and the numbers in block
end
于 2015-03-11T20:40:43.707 回答