我在使用gsub方法获取网址后尝试检查网址时遇到了一些问题。
从控制台可以正常工作:
('http://ale.it' =~ URI::regexp).nil?.to_s
=> "false"
但如果我发布它不起作用:
"http://ale.it".gsub(/http[s]?:\/\/[^\s]+/, ('\0' =~ URI::regexp).nil?.to_s)
=> "true"
如何获得正确的网址?
答案 0 :(得分:3)
这是对你的两个例子的解释。虽然这不是一个真正的答案,但是在评论中有点长。
=~
返回匹配发生的位置,如果找不到匹配则返回nil
。
在您的第一个示例中,“http://ale.it”匹配URI::regexp
从位置0开始,因此您获得0.nil?
这是假的,转换为字符串“false”
gsub
采用2个参数,一个模式和一个替换字符串,并用替换替换模式的所有匹配。
'\ 0'与URI::regexp
不匹配,因此('\0' =~ URI::regexp).nil?
为真,并且应用to_s
时字符串为“true”。
“http://ale.it”匹配/http[s]?:\/\/[^\s]+/
,因此将替换为“true”。
您必须扩展您的问题以解释您想要实现的目标。
答案 1 :(得分:0)
我解决了:
"http://ale.it".gsub(/http[s]?:\/\/[^\s]+/) do |m|
(m =~ URI::regexp).nil?.to_s)
end