如何解决R regex列出不以“ AA”或“ BB”开头的文件
这是我们需要在工作目录中创建的reprex:
library(tidyverse)
library(openxlsx)
library(readxl)
write.xlsx(list(iris),"AA-excel-file.xlsx")
write.xlsx(list(iris),"BB-excel-file.xlsx")
write.xlsx(list(iris),"CC-excel-file.xlsx")
write.xlsx(list(iris),"DD-excel-file.xlsx")
write.xlsx(list(iris),"EE-excel-file.xlsx")
我的工作目录如下:
C:
├── my-R-working-directory/
├── AA-excel-file.xlsx
├── BB-excel-file.xlsx
├── CC-excel-file.xlsx
├── DD-excel-file.xlsx
└── EE-excel-file.xlsx
我精心制作了一个正则表达式(demo here),用于“选择”任何以AA
或BB
开头的文件:
^(?!AA|BB)\w+$
我想将此正则表达式与基数R list.files()
一起使用,以列出不是以AA
或BB
开头的所有文件。这是我的尝试:
list.files("path/of/folder",pattern = "\\^(?!AA|BB)\w+$.xlsx$",full.names = TRUE)
#> Error: '\w' is an unrecognized escape in character string starting ""\\^(?!AA|BB)\w"
#> Error: unexpected ')' in " full.names = TRUE)"
我认为我的模式论点有些偏离。这个类似的命令确实可以正常工作,但不会排除AA
和BB
文件:
list.files("path/of/folder",pattern = "\\.xlsx$",full.names = TRUE)
如何正确编写pattern
参数以排除以AA
或BB
开头的任何文件?如果有能力,您可以更正我的正则表达式吗?正则表达式似乎只能使用“字母或数字”字符。任何空格,破折号,圆点等都会破坏正则表达式(see demo)。
解决方法
您可以使用pattern
来获取所有xlsx
个文件,然后将以grep
或AA
开头的文件BB
取反:
library(tidyverse)
library(openxlsx)
library(readxl)
write.xlsx(list(iris),"AA-excel-file.xlsx")
write.xlsx(list(iris),"BB-excel-file.xlsx")
write.xlsx(list(iris),"CC-excel-file.xlsx")
write.xlsx(list(iris),"DD-excel-file.xlsx")
write.xlsx(list(iris),"EE-excel-file.xlsx")
grep("^(AA|BB).*",list.files(pattern = "\\.xlsx$"),invert = TRUE,value = TRUE)
#> [1] "CC-excel-file.xlsx" "DD-excel-file.xlsx" "EE-excel-file.xlsx"
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。