我正在尝试匹配块中的所有文本:
group :development do
gem 'test'
end
在上面的上下文中,我想返回"gem 'test'"
。
我正在使用的是:
/(?<=group :development do)(.*)(?=end)/m
为什么不起作用?
答案 0 :(得分:4)
我不确定原因,但将.*
更改为.*?
可以匹配。
Rubular:http://www.rubular.com/r/GaQj6cM0rk
它似乎与.*
匹配得很好,但由于某些原因它似乎没有回溯。
以下是使用.*
时的Rubular:http://www.rubular.com/r/jKf0bDZi7T
请注意,无论出现这种行为的原因是什么,您都应该使用.*?
,否则您只能找到从第一个块的开头到最后一个块的末尾的单个匹配(如果有的话)字符串中的多个块)。