这是这里先前线程的后续内容。我有相同的目标,但略有调整。
所以假设一个新的文件名向量
c("D:/example/sub1/session1/OD/CD/adsfadfadsfadfadf_blue.txt", "D:/example/sub2/session1/OD/CD/text.txt",
"D:/example/sub3/session1/OD/CD/text.txt")
我将如何调整此代码
library(stringr)
library(magrittr)
all_dirs <-
c("D:/example/sub1/session1/OD/CD/text.txt",
"D:/example/sub2/session1/OD/CD/text.txt",
"D:/example/sub3/session1/OD/CD/text.txt")
new_dirs <-
all_dirs %>%
# Match each group using regex
str_match_all("D:/example/(.+)/(.+)/OD/CD/(.+)") %>%
# Paste the matched groups into one path
vapply(function(x) paste0(x[2:4], collapse = "_"), character(1)) %>%
paste0("D:/all_files/", .)
# Copy them.
file.copy(all_dirs, new_dirs)
这样我就只能选择文件blue
名中某处的文件?我曾尝试调整这条线
str_match_all("D:/example/(.+)/(.+)/OD/CD/(.+)") %>%
代替说
str_match_all("D:/example/(.+)/(.+)/OD/CD/*blue*") %>%
但这似乎不起作用。同样,主要目标仍然与先前的帖子相同。我希望保留完整的文件名。
抱歉,我不知道R,但是如何:
str_match_all("D:/example/(.+)/(.+)/OD/CD/(.*blue[^/]*)") %>%
如果R中的正则表达式的行为类似于其他引擎/语言,则。+将匹配任何一个或多个字符。因此可能会匹配目录层次结构中的多个级别。。*将匹配任何零个或多个字符。[^ /] *将匹配非斜杠的任何零个或多个字符。
希望这对您有所帮助。如果要将URL的这一部分限制为一个目录级别,则不妨将所有。+或。*更改为[^ /] +或[^ /] *。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句