除了协议定义('http [s]://','ftp://'等)之外,我想要替换URL中的所有多个斜杠。我该怎么做呢?Ruby正则表达式:替换URL中的双斜杠
此代码代替,没有任何例外:
url.gsub(/\/\/+/, '/')
除了协议定义('http [s]://','ftp://'等)之外,我想要替换URL中的所有多个斜杠。我该怎么做呢?Ruby正则表达式:替换URL中的双斜杠
此代码代替,没有任何例外:
url.gsub(/\/\/+/, '/')
你只需要排除这是由:
url.gsub(/([^:])\/\//, '\1/')
gsub
preceeded任何比赛可以拿块:
url = 'http://host.com//foo/bar'
puts url.gsub(%r{.//}) { |s| (s == '://') ? s : s[0] + '/' }
>> http://host.com/foo/bar
或者,@Phrogz如此亲切地提醒我们:
puts url.gsub(%r{(?<!:)//}, '/')
>> http://host.com/foo/bar
我尝试使用URI:
require "uri"
url = "http://host.com//foo//bar"
components = URI.split(url)
components[-4].gsub!(/\/+/, "/")
fixed_url = [components[0], "://", components[2], components[-4]].join
但是这似乎并不比使用正则表达式更好。
谢谢,但我怎么能现在阻止它从左边选择最接近的字符? http://rubular.com/r/PhVk4JSxcx – krn 2011-02-11 00:23:03