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

时间:2013-03-05 20:30:49

标签: ruby regex

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

group :development do
  gem 'test'
end

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

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

为什么不起作用?

1 个答案:

答案 0 :(得分:4)

我不确定原因,但将.*更改为.*?可以匹配。

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

它似乎与.*匹配得很好,但由于某些原因它似乎没有回溯。

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

请注意,无论出现这种行为的原因是什么,您都应该使用.*?,否则您只能找到从第一个块的开头到最后一个块的末尾的单个匹配(如果有的话)字符串中的多个块)。