2010-09-13 51 views
0

我想通過刪除包括子節點(s)(特別是標題和圖像)在內的某些html節點並刪除所有其他標籤來生成文章的搜索預覽。段落,同時留下子節點。有條件剝離HTML節點 - Regexp/gsub

例如

"<h2>Subject</h2><p>Subject is the who, what, where, why and when.</p>".gsub(/<\/?[^>]*>/, '') 

結果

Subject Subject is the who, what, where, why and when. 

但是我需要

Subject is the who, what, where, why and when. 

我使用Rails插件Loofah消毒用戶輸入來完成這項工程;實際上我可以定義一個擦除器來完成這個任務,但是看起來正則表達式對於這個簡單的操作來說就足夠了。

在此先感謝您的任何建議。

回答

1

使用幾個正則表達式:

"<h2>Subject</h2><p>Subject is the who, what, where, why and when.</p>". 
    gsub(/<h\d>[^>]*>/,''). 
    gsub(/<img[^>]*>/,''). 
    gsub(/<\/?[^>]*>/, '') 

但是,應該注意的是,你達到什麼樣的正則表達式可以處理HTML處理複雜性的限制。如果你需要做更復雜的事情(比如根據類名等去除),那麼你應該使用一個html解析器。

+0

謝謝!儘管認爲只有一個正則表達式是可能的,但這很有用。正如你所說,我想我可能只是使用絲瓜。 – mark 2010-09-13 10:51:02

0

嘗試:

myline = line.gsub!(/(<[^>]*>)|\n|\t/s) {" "}