質問: ruby の正規表現で `/pat/o` と記述を行った時に、このフラグの仕様はどのようなものになりますか? つまり、これを素直に捉えると、 `o` のフラグがなければ、 `#{}` の interpolation (文字列の中の式展開) は再帰的に何回でも可能である、と理解されるのですが、 1. この仕様についての理解は自分は正しいでしょうか? 2. 仮にそうであったとして、おそらく1回に式展開を制限するのは、予想外の動作を防ぐためであると理解ができますが、逆に、再帰的な interpolation を積極的に行いたくなる usecase がちょっと自分には想像ついておらず、これがデフォルトの動作になっている意図が理解できていないです。どのような場合に、再帰的な式展開を行いたくなるものなのでしょうか?
回答: `/o` フラグは再帰するかどうかではなくて、正規表現のリテラル表記を評価する度に展開するかどうか(新しい正規表現オブジェクトを作るかどうか)です。 ``` 3.times do |i| re1 = /#{i}/ re2 = /#{i}/o p [re1, re2] end ``` 出力 ``` [/0/, /0/] [/1/, /0/] [/2/, /0/] ```