我正在尝试在ruby文件中的适当位置添加新行。其中一些文件的代码如下:
def abc
...
end
def pqr
...
end
我想在适当的位置添加新行,如下所示:
def abc
...
end
def pqr
...
end
这样代码就更具可读性了。我提出的初始正则表达式是带有m
开关的def.*?def
,它基于def
关键字进行匹配。但是该正则表达式也与def关键字匹配,这些关键字已经由空行分隔。有什么想法吗?
发布于 2013-04-22 05:48:14
您可以执行类似/end\ndef/
的操作(您可能需要使用\r\n,这取决于您在编辑器中使用的行尾模式)。
这将匹配一个文字end
,然后是一个行回车,紧接着是一个文字def
。
只需替换一个额外的换行符,它就会工作得很好!
发布于 2013-04-22 05:52:16
在您的线路上尝试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
https://stackoverflow.com/questions/16136489
复制相似问题