ブロック内のすべてのテキストを一致させようとしています:
group :development do
gem 'test'
end
上記のコンテキストでは、 を返したいです"gem 'test'"
。私が使用しているのは次のとおりです。
/(?<=group :development do)(.*)(?=end)/m
うまくいかないのはなぜですか?
正確な理由はわかりませんが、 を に変更する.*
と.*?
、これを一致させることができます。
ルビュラー: http://www.rubular.com/r/GaQj6cM0rk
との相性も良さそうです.*
が、なぜか後戻りしていないようです。
.*
代わりに使用された場合のルビュラーは次のとおりです: http://www.rubular.com/r/jKf0bDZi7T
この動作の理由に関係なく、.*?
とにかく使用する必要があることに注意してください。そうしないと、最初のブロックの先頭から最後のブロックの末尾までの単一の一致しか見つかりません (文字列に複数のブロックがある場合)。