Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于R中具有特定文件名的父目录重命名文件_R_Regex - Fatal编程技术网

基于R中具有特定文件名的父目录重命名文件

基于R中具有特定文件名的父目录重命名文件,r,regex,R,Regex,这是上一个线程的后续。我也有同样的目标,但有一点调整 所以假设一个新的文件名向量 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/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)
而是说

str_match_all("D:/example/(.+)/(.+)/OD/CD/*blue*") %>%

但这似乎不起作用。此外,主要目标与上一篇文章相同。我希望保留完整的文件名

对不起,我不知道R,但是:

str_match_all("D:/example/(.+)/(.+)/OD/CD/(.*blue[^/]*)") %>%
如果R中的正则表达式的行为与其他引擎/语言中的一样,则.+将匹配任何字符中的一个或多个。因此可能会匹配目录层次结构中的多个级别。.*将匹配任何字符中的零个或多个。[^/]*将匹配零个或多个非斜杠字符


我希望这有助于。。。如果要将URL的该部分限制为一个目录级别,您可能希望将所有的“.+或。*”更改为[^/]+或[^/]*。

对不起,我不知道R,但是:

str_match_all("D:/example/(.+)/(.+)/OD/CD/(.*blue[^/]*)") %>%
如果R中的正则表达式的行为与其他引擎/语言中的一样,则.+将匹配任何字符中的一个或多个。因此可能会匹配目录层次结构中的多个级别。.*将匹配任何字符中的零个或多个。[^/]*将匹配零个或多个非斜杠字符

我希望这有助于。。。如果要将URL的该部分限制为一个目录级别,您可能希望将所有的.+或.*更改为[^/]+或[^/]*。

我们可以先使用grep筛选值,然后继续相同的方法

new_dirs <- grep('blue', all_dirs, value = TRUE) %>%
               stringr::str_match_all("D:/example/(.+)/(.+)/OD/CD/(.+)") %>%
               vapply(function(x) paste0(x[2:4], collapse = "_"), character(1)) %>%
               paste0("D:/all_files/", .)

new_dirs
 #[1] "D:/all_files/sub1_session1_adsfadfadsfadfadf_blue.txt"
资料

我们可以使用grep先过滤这些值,然后继续使用相同的方法

new_dirs <- grep('blue', all_dirs, value = TRUE) %>%
               stringr::str_match_all("D:/example/(.+)/(.+)/OD/CD/(.+)") %>%
               vapply(function(x) paste0(x[2:4], collapse = "_"), character(1)) %>%
               paste0("D:/all_files/", .)

new_dirs
 #[1] "D:/all_files/sub1_session1_adsfadfadsfadfadf_blue.txt"
资料


这可能是另一种解决办法

删除修改模式的原始请求

然后,蓝色变成了蓝色

蓝色表示aim文本获取的文件名仅包含蓝色

.蓝色。表示四种类型的目标字符串

有四个例子

只有蓝色

蓝精灵

杜布鲁

杜比72码


这可能是另一种解决办法

删除修改模式的原始请求

然后,蓝色变成了蓝色

蓝色表示aim文本获取的文件名仅包含蓝色

.蓝色。表示四种类型的目标字符串

有四个例子

只有蓝色

蓝精灵

杜布鲁

杜比72码

new_dirs <-
  all_dirs %>%
  # Match each group using regex
  str_match_all("D:/example/(.+)/(.+)/OD/CD/(.*blue.*)") %>%  
# Paste the matched groups into one path
  vapply(function(x){paste0(x[2:4], collapse = "_")%>%paste0(x[1],.)},character(1)) %>% 
  grep(pattern = "D:",value = T)