正则表达式替换Ruby异常处理程序

时间:2013-07-08 08:51:20

标签: ruby regex rubymine

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

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

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

Regular Expression to find a string included between two characters while EXCLUDING the delimiters

它引导我进入以下两种可能的正则表达式:

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

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

连连呢?谢谢!

1 个答案:

答案 0 :(得分:2)

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

在正则表达式中添加(?s)(?sm)以使点(。)与换行符匹配。 或者添加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 "]]