如何解决使用 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
,使 { {1}} 还匹配默认情况下不匹配的换行符)模式 -
.
- 一行的开始 -
^
- 文字myFunction\\(\\{
文本 -
myFunction({
- 任何零个或多个字符,尽可能少 -
.*?
- 一行的开始 -
^
- 文字\}\)
文本 -
})
- 行尾。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。