R 中 list.files 中的否定前瞻断言

Negative look-ahead assertion in list.files in R

我尝试列出目录中 而非 以 "Camera1" 开头但以“.png”结尾的所有文件。为此,我在 R 中的 list.files 中使用正则表达式。 为了排除 "Camera1",我尝试使用负前瞻,但它不起作用。我的错误在哪里? ;)

list.files(pathToDirectory, pattern = "^(?!Camera1).*\.png")

我收到错误:invalid 'pattern' regular expression 提前致谢:)

看起来默认引擎不喜欢 lookarounds,因此您需要使用 Perl。这有效:

dat <- c("Camera1.png", "Camera2.png", "hello.png", "boo")
grep("^(?!Camera1).*\.png", dat, value=T, perl=T)
# [1] "Camera2.png" "hello.png" 

但事实并非如此:

grep("^(?!Camera1).*\.png", dat, value=T)
# invalid regular expression '(?<!Camera1)\.png', reason 'Invalid regexp'

所以,做你想做的事:

grep("(?<!Camera1)\.png", list.files(), perl=T, value=T)