r语言 - 使用str_extract_all提取花括号之间的字符串



我有以下代码:

myFunction.R

myFunction({
lorem <- "ipsum"
...
print("dolor sit amet")
})
myFunction({
consectetur <- "adipiscing elit"
...
sed <- paste("do", "eiusmod")
})
...

在另一个R脚本中,我想提取所有myFunction调用。现在我能想到的最好的是:

library(stringr)
library(readtext)
script <- readtext('myFunction.R')[['text']]
matches <- str_extract_all(script, 'myFunction(.|\n)*\}\)')[[1]]

但不幸的是,matches包含第一个myFunction调用,直到文件的末尾。我如何改进RegEx只匹配每个myFunction调用?

可以使用

str_extract_all(script, "(?ms)^myFunction\(\{.*?^\}\)$")

细节:

  • (?ms)-打开多行(m,使^$分别匹配行开始和行结束)和dotall (s,使.也匹配默认不匹配的换行符)模式
  • ^-行起始
  • myFunction\(\{-文字myFunction({文本
  • .*?-任何零或更多字符,尽可能少
  • ^-行起始
  • })-文字})文本
  • $-行尾

相关内容

  • 没有找到相关文章

最新更新