正则表达式查找不以 list.files() 的特定字符串开头的文件
regex to find files not starting from a particular string with list.files()
我正在尝试列出文件夹中不以特定字符串开头的文件。我尝试使用下面的正则表达式但没有成功。我想列出不以 "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
参数与模式一起传递。
但是,以下应该可以解决问题(假设您希望所有文件不是以 SH 开头,而是以 .csv
结尾。
list.files(pattern = '^[^SH].+\.csv$')
您可以使用以下正则表达式解决 list.files()
中缺少 perl=T
支持的问题:
^(.|[^S].*|.[^H].*)\.csv
这里是a demo of how this regex work
此正则表达式允许任何 1 个字符的文件名,或 2 个字符的文件名,开头没有 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)]
我正在尝试列出文件夹中不以特定字符串开头的文件。我尝试使用下面的正则表达式但没有成功。我想列出不以 "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
参数与模式一起传递。
但是,以下应该可以解决问题(假设您希望所有文件不是以 SH 开头,而是以 .csv
结尾。
list.files(pattern = '^[^SH].+\.csv$')
您可以使用以下正则表达式解决 list.files()
中缺少 perl=T
支持的问题:
^(.|[^S].*|.[^H].*)\.csv
这里是a demo of how this regex work
此正则表达式允许任何 1 个字符的文件名,或 2 个字符的文件名,开头没有 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)]