You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从目录向量提取Basler_后至_bg/_frames前的唯一名称

提取目录路径中的唯一名称

问题背景

现有如下目录路径向量:

c("", "Dia 04", "Dia 04/Basler_2020-11-04 13_08_41.568967_bg", 
"Dia 04/Basler_2020-11-04 13_08_41.568967_frames", "Dia 04/Basler_2020-11-04 13_38_46.380957_bg", 
"Dia 04/Basler_2020-11-04 13_38_46.380957_frames", "Dia 04/Basler_2020-11-04 14_08_51.133352_bg", 
"Dia 04/Basler_2020-11-04 14_08_51.133352_frames", "Dia 04/Basler_2020-11-04 14_38_55.875411_bg", 
"Dia 04/Basler_2020-11-04 14_38_55.875411_frames")

需要提取Basler_之后、_bg或_frames之前的唯一名称,尝试用list.dirs()的pattern参数未生效。

解决方案

方法1:直接处理已有目录向量

如果已经获取了目录向量,可按以下步骤提取目标内容:

  1. 过滤出包含Basler_且以_bg/_frames结尾的路径
  2. 用正则提取中间核心名称
  3. 去重得到唯一结果

代码示例:

# 定义目录向量
dir_vec <- c("", "Dia 04", "Dia 04/Basler_2020-11-04 13_08_41.568967_bg", 
             "Dia 04/Basler_2020-11-04 13_08_41.568967_frames", "Dia 04/Basler_2020-11-04 13_38_46.380957_bg", 
             "Dia 04/Basler_2020-11-04 13_38_46.380957_frames", "Dia 04/Basler_2020-11-04 14_08_51.133352_bg", 
             "Dia 04/Basler_2020-11-04 14_08_51.133352_frames", "Dia 04/Basler_2020-11-04 14_38_55.875411_bg", 
             "Dia 04/Basler_2020-11-04 14_38_55.875411_frames")

# 过滤符合结构的路径
target_paths <- grep("Basler_.*(_bg|_frames)$", dir_vec, value = TRUE)

# 提取目标名称部分
extracted <- sub(".*/Basler_(.*)_(bg|frames)$", "\\1", target_paths)

# 去重得到唯一名称
unique_names <- unique(extracted)

# 输出结果
unique_names

运行后输出:

[1] "2020-11-04 13_08_41.568967" "2020-11-04 13_38_46.380957"
[3] "2020-11-04 14_08_51.133352" "2020-11-04 14_38_55.875411"

方法2:调整list.dirs()参数获取路径后提取

原list.dirs()调用未生效的原因是:默认不支持Perl正则的正向预查语法,且pattern仅用于筛选路径而非提取内容。调整后代码如下:

# 从文件系统获取符合条件的目录名
target_dirs <- list.dirs(path = ".", full.names = FALSE, recursive = TRUE, 
                         pattern = "Basler_.*(_bg|_frames)$", perl = TRUE)

# 提取目标名称并去重
unique_names <- unique(sub("Basler_(.*)_(bg|frames)$", "\\1", target_dirs))

内容的提问来源于stack exchange,提问作者Wilson Souza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 07:24:19