簡體   English   中英

正則表達式將BBCode分為幾部分

[英]Regex to split BBCode into pieces

我有這個:

str = "some html code [img]......[/img] some html code [img]......[/img]"

我想得到這個:

["[img]......[/img]","[img]......[/img]"]

請不要使用BBCode。 這是邪惡的

當開發人員懶得無法正確解析HTML並決定發明自己的標記語言時,BBCode誕生了。 與所有懶惰產品一樣,結果完全不一致,不規范且被廣泛采用。

嘗試使用用戶友好的標記語言,例如Markdown (這是Stack Overflow所使用的)或Textile 他們兩個都有Ruby的解析器:


如果您仍然不想聽我的建議並選擇使用BBCode,請不要重新發明輪子並使用BBCode解析器 要直接回答您的問題,最不希望的選擇是:使用正則表達式。

/\[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]"]

請記住,這是一個非常具體的答案,它基於您的確切問題。 例如,通過在圖像標簽中添加圖像標簽來更改str所有地獄都會崩潰

Google Code中有一個ruby BBCODE解析器

不要為此使用正則表達式。

str = "some html code [img]......[/img] some html code [img]......[/img]"
p str.split("[/img]").each{|x|x.sub!(/.*\[img\]/,"")}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM