Ruby newb:如何提取子字符串?

Ruby newb:如何提取子字符串?,ruby,Ruby,我正试图在CBS体育版上搜寻NBA的投篮数据。 以下是我开始使用的页面,并将其用作示例: 在源代码中,我找到了一个字符串,其中包含我需要的所有数据。此字符串在网页源代码中直接位于var CurrentShotData=new下 我想要的是将源代码中的这个字符串转换成一个可以在ruby中使用的字符串。但是,我在语法方面遇到了一些问题。这是我的 require 'nokogiri' require 'mechanize' a = Mechanize.new a.get('http://www.cb

我正试图在CBS体育版上搜寻NBA的投篮数据。 以下是我开始使用的页面,并将其用作示例:

在源代码中,我找到了一个字符串,其中包含我需要的所有数据。此字符串在网页源代码中直接位于var CurrentShotData=new下

我想要的是将源代码中的这个字符串转换成一个可以在ruby中使用的字符串。但是,我在语法方面遇到了一些问题。这是我的

require 'nokogiri'
require 'mechanize'

a = Mechanize.new
a.get('http://www.cbssports.com/nba/gametracker/shotchart/NBA_20131114_HOU@NY') do    |page|
shotdata = page.body.match(/var currentShotData = new String\(\"(.*)\"\)\; var  playerDataHomeString/m)[1].strip
print shotdata
end
我知道我一定做错了。。。它看起来太复杂了,更重要的是,它对我不起作用。有人能告诉我将这个字符串转换成Ruby的简单方法吗?

尝试替换:

shotdata = page.body.match(/var currentShotData = new String\(\"(.*)\"\)\; var  playerDataHomeString/m)[1].strip
与:


(.*)
更改为
(.*)
将导致字符串出现(最小字符数的匹配),这是您想要的行为。

不起作用。是不是在“;”和“var playerDataHomeString”之间有一个换行符?@user3000487您能给出一个有效值
page.body
的示例吗?一个有效值?不太清楚那是什么意思。当我只输入page.body而不是所有其他内容时,它会打印页面的整个源代码。我只需要能够搜索作为源代码的字符串并提取这一组数字。编辑:对不起,现在可以用了。问题是断线,但多亏了你懒惰的评估,我甚至不需要任何东西,除了“;”。非常感谢。@user3000487 add
将page.body
添加到您的代码中,并发布输出(将其添加到您的问题中)。
shotdata = page.body.match(/var currentShotData = new String\(\"(.*?)\"\)\; var  playerDataHomeString/m)[1].strip