在ruby中使用正则表达式

时间:2011-09-23 03:19:10

标签: ruby regex

我试图删除给定字符串中的所有<br>

 def extract(a)
    a=a.delete("/ (\<br\>)+ /")
    puts a
    end

    extract("e<gr>y<br>t<gh>hello")

egytghhello作为输出。为什么<r>的{​​{1}}和<gr> <>未被打印?

3 个答案:

答案 0 :(得分:7)

String.delete不会将正则表达式作为参数,它会使用一组字母,所有这些字母都将从调用它的字符串中删除。

因此,您的代码说:删除任何<>br(),{ {1}},空格和+

如果您想使用正则表达式删除字符串的一部分(或/以便进行原位替换),则可以使用String.gsub

关于使用正则表达式处理HTML的不可靠性的常见警告适用:考虑使用像Nokogiri这样的东西,特别是如果你有任何解析或操作要求超出此范围。

答案 1 :(得分:2)

为了以防万一,这应考虑<br><br /><br/>

str = "Hi and <gr>y<br>t<gh>hello<br />bla<br/> some moar"
puts str.gsub(/<br ?\/?>/,'')

或使用类似示例的方法:

def extract(str)
   str.gsub(/<br ?\/?>/,'')
end
puts extract("Hi and <gr>y<br>t<gh>hello<br />bla<br/> some moar")

就我个人而言,我认为最好让方法返回一个字符串,然后puts extract()比在方法中使用puts更好。

答案 2 :(得分:0)

尝试以下方法:

a = a.gsub(/<br>/, '')