1

我正在尝试在我的 ruby​​ 文件中的适当位置添加新行。一些文件的代码如下:

def abc
  ...
end
def pqr
  ...
end

我想在适当的地方添加新行,如下所示:

def abc
  ...
end  

def pqr
  ...
end

使代码更具可读性。我想出的初始正则表达式是基于关键字匹配def.*?def的开关。但是该正则表达式也匹配已经由空白新行分隔的 def 关键字。有任何想法吗?mdef

4

2 回答 2

4

您可以执行类似的操作/end\ndef/(您可能需要使用 \r\n,具体取决于您在编辑器中使用的行结束模式)。

这将匹配一个文字end,然后是一个换行符,然后是一个文字def

只需替换一个额外的换行符,它应该可以正常工作!

于 2013-04-21T21:48:14.087 回答
1

试试Enumerable#slice_before你的台词:

File.readlines('foo.rb').slice_before(/^\s*def\b/).flat_map do |group|
  group << "\n" if group.last =~ /^\s*end\b/
  group
end.join
于 2013-04-21T21:52:15.613 回答