如何创建多行正则表达式?

我正在尝试匹配块中的所有文本:

group :development do gem 'test' end 

在上面的上下文中,我想返回"gem 'test'" 。 我正在使用的是:

 /(?<=group :development do)(.*)(?=end)/m 

为什么不起作用?

我不确定为什么,但将.*更改为.*? 允许这匹配。

Rubular: http ://www.rubular.com/r/GaQj6cM0rk

似乎它应该与.*匹配良好,但由于某种原因它似乎没有回溯。

以下是使用.*时的Rubular: http ://www.rubular.com/r/jKf0bDZi7T

请注意,无论出现此行为的原因,您都应该使用.*? 无论如何,否则你只会找到从第一个块开始到最后一个块结尾的单个匹配(如果字符串中有多个块)。