0

我正在尝试查找并替换标准错误的所有异常处理实例,例如:

begin
  ...
rescue StandardError => e
  logger.debug e.to_s
end

这里的答案听起来应该做我想要的:

正则表达式查找包含在两个字符之间的字符串,同时排除分隔符

它使我想到了以下两个可能的正则表达式:

begin(.*?)rescue
(?<=begin)(.*?)(?=rescue)

这些都不匹配任何东西。我不确定问题出在正则表达式还是IDE(Rubymine)。

建议?谢谢!

4

1 回答 1

2

. 默认情况下不匹配换行符。

(?s)在正则(?sm)表达式中添加 or 以使 dot(.) 匹配换行符。或添加ssm切换。

?> "begin statements... rescue".scan /begin(.*?)rescue/
=> [[" statements... "]]
>> "begin statements...\n rescue".scan /begin(.*?)rescue/
=> []
>> "begin statements...\n rescue".scan /begin(.*?)rescue/s
=> []
>> "begin statements...\n rescue".scan /begin(.*?)rescue/sm
=> [[" statements...\n "]]
于 2013-07-08T08:59:59.293 回答