我想从源文件中提取注释。在.R文件中以#字符开头的所有行
答案 0 :(得分:0)
出于完整性考虑,以下是我的评论作为答案。将这样的源文件用作arbabnasir.R
:
# https://stackoverflow.com/questions/52725155/how-to-read-r-file-as-a-string-or-how-to-extract-comments-lines-from-the-r
# some additional comments
myfunc <- function(a, ...) {
# verify input parameters
stopifnot(is.integer(a)) # something here
cat("# hello\n")
# add one
a+1L
}
我可以通过这种方式解析它,以仅查看评论:
grep("^\\s*#", readLines("~/StackOverflow/arbabnasir.R"), value=TRUE)
# [1] "# https://stackoverflow.com/questions/52725155/how-to-read-r-file-as-a-string-or-how-to-extract-comments-lines-from-the-r"
# [2] "# some additional comments"
# [3] " # verify input parameters"
# [4] " # add one"
如果您需要所有内容 全行注释:
grep("^\\s*#", readLines("~/StackOverflow/arbabnasir.R"), value=TRUE, invert=TRUE)
# [1] "myfunc <- function(a, ...) {"
# [2] " stopifnot(is.integer(a)) # something here"
# [3] " cat(\"# hello\\n\")"
# [4] " a+1L"
# [5] "}"
# [6] ""
请注意,... # something here
注释不是 包含在注释列表中,因为注释字符前面有“东西”。如果尝试延迟提取它们,可能会遇到问题,如我的cat(" hello\n")
代码行所示:注释字符位于字符串中,因此实际上不是注释字符。这不再是一个有效的正则表达式问题,而是进入了源标记和上下文解释,远远超出了此问题的范围。