2011-08-09 4 views
1

1つの文字列からURLを爆発させようとしているときに、実際のURLを返さないとき。 //lnkd.in/HjUViiURLを爆発させる正規表現

代わりの

:私は... self.getUrlsFromString(" check this site...http:// lnkd.in/HjUVii")はそれが

サイトを返すのHTTPを行うとき、私は

def self.getUrlsFromString(str="") 
    url_regexp = /(?:http|https):\/\/[a-z0-9]+(?:[\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(?:(?::[0-9]{1,5})?\/[^\s]*)?/ix 
    url  = str.split.grep(url_regexp) 
    return url 
rescue Exception => e 
    DooDooLogger.log(e.message,e) 
    return "" 
end 

を使用していたDEFを見つけてください。

http://lnkd.in/HjUVii

答えて

1

Arrayクラス内のgrepは、要素のすべての要素の配列を返すので、それはとても

str.split.grep(/http/ix) 

は、[ "サイト...のhttp://lnkd.in/HjUVii"]を返し、===パターンですあまりにも。

あなたが代わりにこのような

str.split.grep(url_regexp) 

何かを試すことができます。

url_regexp.match(str).to_s 
0

は、あなたが使用してはならないような正規表現として非常に簡単なもの:検索したい場合は

/((http|https):[^\s]+)/ 
0

文字列内のすべての文字列、String#scan

str = "check these...http://lnkd.in/HjUVii http://www.google.com/" 

str.scan(url_regexp) 
=> ["http://lnkd.in/HjUVii", "http://www.google.com/"]