text = '[quote][pid=446682464,23044506,4]Reply[/pid] [b]Post by [uid=43110557]掌露成霜[/uid] (2020-08-21 07:54):[/b]<br/><br/>被不被欺负无非是自己选择而已。我小学毕业的时候1米25,扳手腕扳不过全班女生,本来是挺容易被欺负的,然而整个中学生涯都没被人欺负过。<br/>说白了就是审时度势而已,知道没啥武力,平时就温和一些,拿自己掌握的资源最大限度的给自己谋福利。<br/>我曾经拿半套篮球飞人挑班里差生圈中比较面善的混了个脸熟。[/quote]<br/><br/>你真是个人才。'
text.gsub!('<br/>', "\n")
text.gsub!(/\[quote\].*?\[uid.*?\](.*?)\[\/uid\].*?\[\/b\](.*?)\[\/quote\](.*?)/m){|a|
r = /\[quote\].*?\[uid.*?\](.*?)\[\/uid\].*?\[\/b\](.*?)\[\/quote\](.*?)/m.match(a)
mid = r[2].gsub("\n", "\n>")
">#{r[1]} 说:\n>#{mid}\n#{r[3]}"
}
puts text
把网页文本保存成 markdown,觉得图中写法比较不好,但是用下面这个写法又没有达到把 [quote] 正文每行前加个'>'号的效果。有更优美的写法吗?
text.gsub!(/\[quote\].*?\[uid.*?\](.*?)\[\/uid\].*?\[\/b\](.*?)\[\/quote\](.*?)/m, ">\\1 说:\n>#{"\\2".gsub("\n", "\n>")}\n\\3")
# 不能成功替换