From: Robert Klemme Date: 2010-01-24T01:45:16+09:00 Subject: Re: urls from gsub not correct On 01/23/2010 05:32 PM, Luca Roma wrote: > > i have some problems when i try to check urls after get them from gsub > method. ex > > from the console: > > ('http://ale.it' =~ URI::regexp).nil?.to_s > => "false" > > and it works fine but if i launch this: > > "http://ale.it".gsub(/http[s]?:\/\/[^\s]+/, ('\0' =~ > URI::regexp).nil?.to_s) > => "true" > > it doesn't work. It cannot because your second match is evaluated *before* gsub starts its work. So the value passed as second argument to gsub can never change. > How can i do, for get correct urls? The question is: what do you want to achieve with the code? It looks like you want to replace valid URL's with "false" and invalid URL's with "true". That does not seem reasonable to me but if you want to do that you can use the block form of gsub like this: "http://ale.it".gsub(/http[s]?:\/\/[^\s]+/) do |m| (m =~ URI::regexp).nil?.to_s end Kind regards robert -- remember.guy do |as, often| as.you_can - without end http://blog.rubybestpractices.com/