当我试图从一个字符串中分解url时,它没有返回实际的URL。请找到我使用的def
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
当我执行self.getUrlsFromString(" check this site...http://
lnkd.in/HjUVii")
时,它正在返回
网站... HTTP://lnkd.in/HjUVii
而不是
http://lnkd.in/HjUVii
答案 0 :(得分:1)
这是因为Array类中的grep返回元素=== pattern的每个元素的数组,所以
str.split.grep(/http/ix)
也将返回[“site ... http://lnkd.in/HjUVii”]。
您可以尝试代替
str.split.grep(url_regexp)
类似的东西:
url_regexp.match(str).to_s
答案 1 :(得分:0)
你不应该像正则表达式那样使用更简单的东西:
/((http|https):[^\s]+)/
答案 2 :(得分: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/"]