これは、「数学記号を含むこの正規表現の何が問題になっていますか? (Ruby/Rails) 」のバリエーションです。
scan
これに続く agsub
がプラス記号 ( ) で機能しない理由がわかりません+
。パターンにアスタリスク ( *
) やキャレット ( ^
) などの他の正規表現特殊文字が含まれている場合にも失敗します。
~ > irb
>> text = %(test √x+1 √x-1 √x×1 √/1)
=> "test √x+1 √x-1 √x×1 √/1"
>> radicals = text.scan(/√[^\s]*/)
=> ["√x+1", "√x-1", "√x×1", "√/1"]
>> radicals.each do |radical|
?> text = text.gsub(/#{radical}/, 'hello')
>> end
=> ["√x+1", "√x-1", "√x×1", "√/1"]
>> text
=> "test √x+1 hello hello hello"
5 行目でわかるようにscan
、プラス記号 ( ) で一致するパターンが見つかりますが、各結果+
に対して を実行しようとするgsub
と、プラス記号のパターンは無視されます。ここで何が起こっているかについてのアイデアはありますか?