2014-11-02 85 views
0

好先生。正則表達式是正確的 - 但匹配返回零 - 爲什麼?

我似乎有一個像樣的正則表達式捕捉到我想要的網址...

所以我怎麼使用它錯了嗎?

2.0.0-p451 :237 > resbody 
=> "{"provider_url": "http://www.popsci.com", ... 
2.0.0-p451 :240 > resbody.match(/"thumbnail_url":"([^"]*)"/) 
=> nil 
2.0.0-p451 :241 > resbody.scan(/"thumbnail_url":"([^"]*)"/) 
=> [] 
2.0.0-p451 :242 > resbody[/"thumbnail_url":"([^"]*)"/,1] 
=> nil 
+3

明顯的問題是必須要問:爲什麼不直接使用'JSON.parse'然後訪問'thumbnail_url'從結果散列? – 2014-11-02 05:33:20

+0

2.0.0-p451:256> JSON.parse(resbody)[「thumbnail_url」]確實可行! – dwilbank 2014-11-02 05:35:14

+1

我在這裏粘貼了錯誤的散列。實際上還有一個來自API的錯誤,JSON.parse根本無法處理它。這讓我走上了正則表達式的道路,我仍然希望找出如何正確處理這些字符串。 – dwilbank 2014-11-02 05:36:20

回答

1

該字符串看起來像JSON。因此,下面應該返回你所需要的:

require 'json' 
JSON.parse(resbody)['thumbnail_url'] 
+0

謝謝先生。有用! (和thumbnail_url是我需要的 - 你可以在屏幕截圖中看到它 - 而不是在我的編輯代碼示例中) – dwilbank 2014-11-02 05:40:57

相關問題