list.files停止在主文件夹和R中的第一个子文件夹中搜索

时间:2017-02-04 01:15:46

标签: r regex

您好我使用RStudio 0.99.903 for Windows 64位。我在名为" UCI HAR Dataset"的文件夹中,如果我使用list.files(recursive = TRUE)列出此文件夹和子文件夹中的所有文件,则所有文件如下所示: full list of .txt files

但是,我想改进代码以列出除&#34; feature_info&#34;之外的所有.txt文件。和#34; README&#34;,这是我使用的list.files(recursive = TRUE, pattern = "[^\\<_info\\> | ^\\<README\\>].txt"),它通过删除我不想要的两个文件起作用,但是,它也排除了&#34; /火车&#34;夹。任何人都可以帮助澄清为什么它停止查看第二个子文件夹?

谢谢!

1 个答案:

答案 0 :(得分:1)

[^\\<_info\\> | ^\\<README\\>]匹配的1个字符不等于<_inf,{{1 }},o,空格,>|^RED,{{1因为M是一个否定括号表达式,它匹配除括号中定义的所有字符之外的所有字符。然后,E匹配任何字符,[^...]匹配.作为字面字符序列。

由于您无法将PCRE正则表达式与list.files一起使用,因此您可以先从指定目录中获取所有文件,然后使用支持PCRE正则表达式的txt过滤掉 lookarounds

txt

请注意

  • grep - 如果字符串开头有> files <- list.files("C:\\5") > files [1] "info.txt" "README.txt" "some-text.txt" > files <<- grep("(?<!^README|^info)\\.txt$", files, perl = TRUE, value = TRUE) > files [1] "some-text.txt" (?<!^README|^info),并且它们位于当前左侧,则会导致匹配失败位置(就在......之前)
  • README - 一个点(模式为info但我们需要在字符串文字中加倍反斜杠以表示文字反斜杠)
  • \\. - 文字字符序列
  • \. - 字符串结束。