BEFORE
この文章の中には、Markdownで**強調**される箇所があります。
**一行**の中に**複数回**出てくるかも知れませんし、
その**複数****箇所**は隣接しているかもしれません。
あるいはまた、**強調される箇所が、
複数行にまたがっている可能性**もあります。
もちろん、まったく強調されない行もあります。
↓
AFTER
この文章の中には、Markdownで<b>強調</b>される箇所があります。
<b>一行</b>の中に<b>複数回</b>出てくるかも知れませんし、
その<b>複数</b><b>箇所</b>は隣接しているかもしれません。
あるいはまた、<b>強調される箇所が、
複数行にまたがっている可能性</b>もあります。
もちろん、まったく強調されない行もあります。
text = <<"EOD"
この文章の中には、Markdownで**強調**される箇所があります。
**一行**の中に**複数回**出てくるかも知れませんし、
その**複数****箇所**は隣接しているかもしれません。
あるいはまた、**強調される箇所が、
複数行にまたがっている可能性**もあります。
もちろん、まったく強調されない行もあります。
EOD
html = <<"EOD"
この文章の中には、Markdownで<b>強調</b>される箇所があります。
<b>一行</b>の中に<b>複数回</b>出てくるかも知れませんし、
その<b>複数</b><b>箇所</b>は隣接しているかもしれません。
あるいはまた、<b>強調される箇所が、
複数行にまたがっている可能性</b>もあります。
もちろん、まったく強調されない行もあります。
EOD
def bold_loop(s)
t = ''
while s.match(/\*\*(.+?)\*\*/m)
t += "#{$`}<b>#{$1}</b>"
s = $'
end
t + s
end
def bold_block(s)
s.gsub(/\*\*(.+?)\*\*/m) do
"<b>#{$1}</b>"
end
end
bold_loop(text) == html #=> true
bold_block(text) == html #=> true"Hello, **world**!" to
"Hello, <b>world</b>!" in Ruby?