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

时间:2013-11-16 22:52:44

标签: ruby

我正试图在NBA搜索CBS体育网页以获取投篮数据。 这是我开始使用并作为示例使用的页面:http://www.cbssports.com/nba/gametracker/shotchart/NBA_20131115_MIL@IND

在源代码中,我找到了一个包含我需要的所有数据的字符串。网页源代码中的此字符串直接位于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吗?

1 个答案:

答案 0 :(得分:0)

尝试替换:

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

使用:

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

使用(.*)更改(.*?)会导致字符串的lazy evaluation(匹配最小字符数),这是您想要的行为。< / p>