我想列出一个文件夹中不以特定字符串开头的文件。我尝试使用下面的正则表达式,但没有成功。我想要列出不以“SH”开头的文件。这会给我一个语法错误:
myFiles = list.files(pattern = "^((?!SH).)*\\.csv")
我想列出一个文件夹中不以特定字符串开头的文件。我尝试使用下面的正则表达式,但没有成功。我想要列出不以“SH”开头的文件。这会给我一个语法错误:
myFiles = list.files(pattern = "^((?!SH).)*\\.csv")
grep
命令:grep("^((?!SH).)*\\.csv", list.files(), perl=T, value=T)
list.files
允许使用正则表达式进行匹配,但它似乎没有grep
、gsub
或gregexp
所描述的完全灵活性,具体请参见help('regex')
,特别是它没有一个perl
参数与模式一起传递。.csv
结尾的文件)。list.files(pattern = '^[^SH].+\\.csv$')
list.files()
中缺少perl=T
支持的问题:^(.|[^S].*|.[^H].*)\\.csv
此正则表达式允许任何一个字符的文件名,或者没有以SH
开头的两个字符的文件名和任何其他文件名。
因此,请使用
myFiles = list.files(pattern = "^(.|[^S].*|.[^H].*)\\.csv")
此函数列出所有文件,不以“SH”开头且以“.csv”结尾。
list.files()[!grepl("^SH.*\\.csv$",list.files())]
或者如果您想忽略大小写,请使用ignore.case=T
:
list.files()[!grepl("^SH.*\\.csv$",list.files(),ignore.case=T)]
myFiles = myFiles[!file.info(myFiles)$isdir]
来排除文件夹。 - nurandi
myFiles = list.files(pattern = "^(?!SH).*\\.csv", perl=T)
。 - Wiktor Stribiżewperl=T
,请尝试"^[^S].*\\.csv|^.[^H].*\\.csv|^.\\.csv"
。或者更紧凑的写法是^(.|[^S].*|.[^H].*)\\.csv
。 - Wiktor Stribiżew