Ruby:替换HTML字符串中的给定URL

时间:2011-10-19 08:53:08

标签: ruby regex

在Ruby中,我想替换HTML字符串中的给定URL 这是我不成功的尝试:

escaped_url = url.gsub(/\//,"\/").gsub(/\./,"\.").gsub(/\?/,"\?")
path_regexp = Regexp.new(escaped_url)
html.gsub!(path_regexp, new_url)

注意:url实际上是我撰写的Google图表请求网址,其中的特殊字符不会超过/?|.=%:

2 个答案:

答案 0 :(得分:2)

我认为你正在寻找类似的东西:

path_regexp = Regexp.new(Regexp.escape(url))

答案 1 :(得分:2)

gsub方法可以将字符串或Regexp作为其第一个参数,同样适用于gsub!。例如:

>> 'here is some ..text.. xxtextxx'.gsub('..text..', 'pancakes')
=> "here is some pancakes xxtextxx"

所以你不需要打扰正则表达式或完全逃避,只需要直接替换字符串:

html.gsub!(url, new_url)

或者更好的是,使用HTML解析器查找您正在查找的特定节点并执行简单的属性分配。