您好我使用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;夹。任何人都可以帮助澄清为什么它停止查看第二个子文件夹?
谢谢!
答案 0 :(得分:1)
[^\\<_info\\> | ^\\<README\\>]
匹配的1个字符不等于<
,_
,i
,n
,f
,{{1 }},o
,空格,>
,|
,^
,R
,E
,D
,{{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
但我们需要在字符串文字中加倍反斜杠以表示文字反斜杠)\\.
- 文字字符序列\.
- 字符串结束。