正则表达式,用list.files()查找不是从特定字符串开始的文件

时间:2015-08-28 09:00:28

标签: regex r regex-negation

我正在尝试列出不以特定字符串开头的文件夹中的文件。我尝试使用下面的正则表达式,但没有成功。我想列出不以“SH”开头的文件。这给了我一个语法错误:

myFiles = list.files(pattern = "^((?!SH).)*\\.csv")

4 个答案:

答案 0 :(得分:2)

您可以尝试grep

grep("^((?!SH).)*\\.csv", list.files(), perl=T, value=T)

答案 1 :(得分:1)

虽然list.files允许使用正则表达式进行匹配,但grepgsubgregexp不具有help('regex')的完全灵活性,如perl所述1}},特别是它没有.csv参数与模式一起传递。

但是,以下应该可以解决问题(假设您希望所有文件不是以SH开头,而是以list.files(pattern = '^[^SH].+\\.csv$') 结尾。

UIViewAnimationOptionTransitionCrossDissolve

答案 2 :(得分:1)

您可以使用以下正则表达式解决perl=T中缺少list.files()支持的问题:

^(.|[^S].*|.[^H].*)\\.csv

这是a demo of how this regex work

此正则表达式允许任何单字符文件名,或开头没有SH的双字符文件名和任何其他文件名。

所以,使用

myFiles = list.files(pattern = "^(.|[^S].*|.[^H].*)\\.csv")

答案 3 :(得分:0)

此功能列出所有文件以“SH”开头,以“.csv”结尾

list.files()[!grepl("^SH.*\\.csv$",list.files())]

或者如果您想忽略案例,请使用ignore.case=T

list.files()[!grepl("^SH.*\\.csv$",list.files(),ignore.case=T)]