2

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

group :development do
  gem 'test'
end

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

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

为什么它不起作用?

4

1 回答 1

4

我不完全确定为什么,但更改.*.*?允许它匹配。

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

看起来它也应该匹配.*得很好,但由于某种原因,它似乎没有回溯。

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

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

于 2013-03-05T20:38:26.170 回答