使用list.files(pattern = ???)仅列出具有a-z和0-9字符的文件,忽略具有特殊字符的文件

时间:2019-04-16 18:41:00

标签: r regex

我正在尝试使用list.files()生成路径列表,并且正在使用以下内容:

paths <- list.files(path = params$path[[1]], 
                    pattern = '*', 
                    all.files = TRUE, 
                    full.names = TRUE, 
                    recursive = TRUE, 
                    ignore.case = TRUE)

但是,我的文件名带有特殊字符(重音符号,问号等)。这些导致了我的问题。现在,我想忽略此列表中的那些文件。我正在尝试使用pattern = param执行此操作,但是没有任何运气。

开始尝试以下操作,但现在找不到任何文件。

paths <- list.files(path = params$path[[1]], 
                           pattern='(a-z)', 
                           all.files=TRUE, 
                           full.names=TRUE, 
                           recursive=TRUE, 
                           ignore.case=TRUE)

有人可以建议我可以添加到模式参数中的正则表达式来查找仅包含[a-z]和/或[0-9]但不包含其他任何字符,没有特殊字符的文件名吗?

1 个答案:

答案 0 :(得分:0)

如果只想包含字母或数字,则还需要以某种方式说明扩展名。以下命令中的模式以一个或多个字母和/或数字开头,然后以句点和3或4个字母和/或数字结尾。

paths <- list.files( path=params$path[[1]], pattern='^[a-z0-9]+?\\.[a-z0-9]{3,4}$', all.files=TRUE, full.names=FALSE, recursive=TRUE, ignore.case=TRUE )