如何创建多行正则表达式?
我正在尝试匹配块中的所有文本:
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
请注意,无论出现此行为的原因,您都应该使用.*?
无论如何,否则你只会找到从第一个块开始到最后一个块结尾的单个匹配(如果字符串中有多个块)。