我尝试列出目录中不以" Camera1"开头的所有文件,但以" .png"结尾。为此,我在R中的list.files中使用正则表达式。 要排除" Camera1",我尝试使用否定前瞻,但它不起作用。我的错误在哪里? ;)
list.files(pathToDirectory, pattern = "^(?!Camera1).*\\.png")
我收到错误:invalid 'pattern' regular expression
在此先感谢:)
答案 0 :(得分:6)
看起来默认引擎不喜欢外观,所以你需要使用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)