【发布时间】:2021-05-25 02:43:31
【问题描述】:
我有以下代码:
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 调用,直到文件末尾。如何改进正则表达式以仅匹配每个 myFunction 调用?
【问题讨论】:
-
str_extract_all(script, "(?ms)^myFunction\\(\\{.*?^\\}\\)$") -
你展示了两个
myFunction。 -
有很多
myFunction调用,@akrun -
第一种方法确实有效,@WiktorStribiżew。
readtext是 readtext 包中的一个函数;它将文件作为单个字符串读取——它缺少[['text']]访问权限,但我现在将在示例中解决此问题。
标签: r regex newline stringr curly-braces