ruby on rails正则表达式查找并删除html字符串中标签之间的标签

时间:2009-12-24 23:13:07

标签: ruby-on-rails regex string

我在轨道上使用红宝石,需要以下内容:

删除html字符串中“code”html标记之间的所有“br”html标记。 “code”标签可能会多次出现。

现在,这不是我试图做的屏幕刮擦。我有一个博客,并希望允许人们只在评论中使用代码html标签。因此,在格式化字符串时,我通常使用simple_format,但我希望它忽略代码html标记。

提前致谢。

3 个答案:

答案 0 :(得分:4)

如果你绝对肯定 使用正则表达式,试试这个,它会捕获所有<br><br/><br />标记:

str.gsub(/<code>.+?<\/code>/) {|s| s.gsub(/<br\s*\/?>/, "")}

经过测试:

str = "Lorem ipsum dolor sit amet<br />, <code>consectetur adipisicing elit<br />, sed do eiusmod tempor incididunt ut labore<br> et dolore magna aliqua</code>. Ut enim ad minim veniam,<br> quis nostrud exercitation ullamco laboris nisi<br/> ut aliquip ex ea commodo consequat. <code>Duis aute irure dolor in reprehenderit<br /> in voluptate velit esse cillum dolore<br/> eu fugiat nulla pariatur.</code> Excepteur sint occaecat cupidatat non proident,<br /> sunt in culpa qui officia deserunt mollit anim id est laborum."
p str.gsub(/<code>.+?<\/code>/) {|s| s.gsub(/<br\s*\/?>/, "")}

如果您不必使用regexp,请使用像nokogiri这样的html解析器。

答案 1 :(得分:0)

使用您选择的Hpricot或HTML解析器将是一个更好的主意。

答案 2 :(得分:0)

我在Hpricot上排名第二,但是我想做什么?试图进行某种网络抓取,还是从模型中解析HTML?