我有這樣的:正則表達式的BBCode分裂成碎片
str = "some html code [img]......[/img] some html code [img]......[/img]"
,我希望得到這樣的:
["[img]......[/img]","[img]......[/img]"]
我有這樣的:正則表達式的BBCode分裂成碎片
str = "some html code [img]......[/img] some html code [img]......[/img]"
,我希望得到這樣的:
["[img]......[/img]","[img]......[/img]"]
irb(main):001:0> str = "some html code [img]......[/img] some html \
code [img]......[/img]"
"some html code [img]......[/img] some html code [img]......[/img]"
irb(main):002:0> str.scan(/\[img\].*?\[\/img\]/)
["[img]......[/img]", "[img]......[/img]"]
請記住,這是一個非常具體的答案,根據您的確切問題。通過例如在圖像標籤和all Hell will break loose中添加圖像標籤來改變str
。
有一個在谷歌代碼一個ruby BBCODE parser。
不要使用正則表達式。
str = "some html code [img]......[/img] some html code [img]......[/img]"
p str.split("[/img]").each{|x|x.sub!(/.*\[img\]/,"")}
請不要使用BBCode。這是邪惡。
BB代碼來生活,當開發商 懶得正確解析HTML ,決定創造自己的標記語言 。與所有產品 懶惰一樣,結果完全是 不一致,非標準化和 被廣泛採用。
嘗試使用一個用戶友好的標記語言,就像Markdown(這就是堆棧溢出使用)或Textile。 他們都有解析器紅寶石:
如果你還不想聽從我的意見,並選擇去BBCode,不要重新發明輪子並使用BBCode parser。要直接回答你的問題,最不理想的選擇是:使用正則表達式。
/\[img\].*?\[\/img\]/
如在rubular上看到的那樣。雖然我會使用/\[img\](.*?)\[\/img\]/
,所以它會提取img
標籤內的內容。請注意,這是相當脆弱的,如果嵌套img
標籤將會中斷。因此,建議使用解析器。
+1僅供參考。儘管它是一個解析器,而不是解釋器。 – muhmuhten 2010-09-25 03:03:19
@sre我知道我不能成爲那個只以熱情憎恨BBCode的人。 – NullUserException 2010-09-25 03:06:17
bbcode是一個構思不良,設計糟糕,通常實施效果不佳的html淘汰。它唯一的救贖品質是它往往比html短。當然,這並不難。 – muhmuhten 2010-09-25 03:10:26
正則表達式並不完全是這個選擇的最佳選擇。 – muhmuhten 2010-09-25 03:05:01