2014-11-02 47 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

相关问题