从Rmarkdown文件中提取块作为原始文本

从Rmarkdown文件中提取块作为原始文本,r,regex,r-markdown,R,Regex,R Markdown,假设我想将rmarkdown块中的所有行提取为原始文本。假装下面的foo对象是一个来自readLines的outout(“my\u rmarkdown\u file.Rmd”): 然而,概括rmarkdown块的开始在这里是一致的;行号不是 总而言之,您知道如何从readLines()中提取任何以规则模式为边界的行吗 start = which(foo == "```{r package, include=FALSE}")[1] + 1 end = which(foo == "```")[1

假设我想将rmarkdown块中的所有行提取为原始文本。假装下面的
foo
对象是一个来自
readLines的outout(“my\u rmarkdown\u file.Rmd”)

然而,概括rmarkdown块的开始在这里是一致的;行号不是

总而言之,您知道如何从
readLines()
中提取任何以规则模式为边界的行吗

start = which(foo == "```{r package, include=FALSE}")[1] + 1
end   = which(foo == "```")[1] - 1

foo[start:end]
如果可以在开始之前进行匹配,那么也可以对结束进行更具体的描述(OP示例的情况并非如此):

foo[3:8]
[1] "library(tidyverse)"  "library(lubridate)"  "library(kableExtra)" "library(knitr)"      "library(sf)"         "library(bcmaps)" 
start = which(foo == "```{r package, include=FALSE}")[1] + 1
end   = which(foo == "```")[1] - 1

foo[start:end]
ends = which(foo == "```")
end = ends[ends > start][1] - 1