我想在 Emacs 中构建一个正则表达式来清理我的 R 代码。
我遇到的问题之一是有不同类型的评论:你有一定数量的空格(1),例如:
# This is a comment:
# This is also a comment
或者你有这样的情况(2):
require(lattice) # executable while the comment is informative
这个想法是我想在第二类评论(在可执行的东西之后)时对齐评论,同时排除第一类评论。
理想情况下,它将所有评论与第一类评论对齐,但不是第一类评论。
例子:
funfun <- function(a, b) {
# This is a function
if (a == b) { # if a equals b
c <- 1 # c is 1
}
}
#
至:
funfun <- function(a, b) {
# This is a function
if (a == b) { # if a equals b
c <- 1 # c is 1
}
}
#
我找到了一个正则表达式来代替第一种,所以我能够按段落对齐它们(标记段落)。那工作得很好。
那么问题是反向替换:
(replace-regexp "^\\s-+#+" "bla" nil (point-min) (point-max))
这将从行首替换为任意数量的空格和任意数量的注释字符,例如:
#########
进入
bla
问题是我想将它们替换回原来的样子,所以“bla”必须回到相同数量的空格和相同数量的#。
希望有人了解我想要做什么,并且对方法有更好的想法,或者知道如何解决这个正则表达式部分。