私がやりたいことは、アンダースコアで区切られたアルファベット文字のシーケンスであるすべての単語を見つけることです。たとえば、次のようになります。
L_L_L
そして、それらを次のようなタグに変えます:
<acronym>L L L</acronym>
頭字語の長さには制限がないため、すべてのインスタンスを見つけるのに苦労しています。
サンプルの頭字語が「アンダースコアで区切られた英大文字の任意のシーケンス」を表していると仮定すると、次のことができます。
def replace_acronyms(str)
str.gsub(/\b([A-Z]+(?:_[A-Z]+)+)\b/) do |m,g1|
'<acronym>' + $1.gsub(/_/,' ') + '</acronym>'
end
end
replace_acronyms('Foo L_L_L bar.') # => "Foo <acronym>L L L</acronym> bar."