2011-09-23 130 views
2

使用正則表達式我試圖給定的字符串中剝離所有<br>的。紅寶石

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

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

是給egytghhello作爲輸出。爲什麼的<gr><r>gh<>沒有得到印?

回答

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

7

String.delete並不需要一個正則表達式作爲參數,它採用一組字母,所有這些都將從這就是所謂的字符串被刪除。

所以,你的代碼是說:刪除任何的<>br()+,空間和/

如果您想使用正則表達式來刪除部分字符串(或gsub!以進行就地替換),您將使用String.gsub

有關使用正則表達式處理HTML的不可靠性通常的警告適用於:考慮使用類似引入nokogiri,特別是如果你有超出這個任何分析或處理要求。

+0

我試着做'a.gsub(/(\ )+ /, 「」)',但其打印同樣的事情。 – Ava

+1

' 「電子ý
你好」 .gsub(/(\ )+/「」)''返回的 「e ý
你好」',原始字符串不變(當然,因爲有沒有在原來的字符串模式的匹配。在強調一些問題與使用上的HTML正則表達式,你的模式將只匹配從其他文字用空格隔開突破標籤,而不會處理自閉XML風格'
'標籤。 –

0

嘗試以下操作:

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