R中list.files中的负前瞻断言

时间:2015-05-29 17:47:31

标签: regex r regex-lookarounds

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

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

我收到错误:invalid 'pattern' regular expression 在此先感谢:)

1 个答案:

答案 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)