我正在尝试在我的ruby文件中的适当位置添加新行。 有些文件的代码如下:
def abc
...
end
def pqr
...
end
我想在适当的位置添加新行,如下所示:
def abc
...
end
def pqr
...
end
这样代码更具可读性。我提出的初始正则表达式为def.*?def
,m
开关根据def
关键字进行匹配。但是这个正则表达式也匹配def关键字,这些关键字已经被一个空白的新行分隔。有什么想法吗?
答案 0 :(得分:4)
您可以执行/end\ndef/
之类的操作(您可能需要使用\ r \ n,具体取决于您在编辑器中使用的行结束模式)。
这将匹配文字end
,然后是换行符,紧接着是文字def
。
只需在额外的换行符中替换,它应该可以正常工作!
答案 1 :(得分: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