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

Pet*_*hro 9 regex r regex-lookarounds

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

list.files(pathToDirectory, pattern = "^(?!Camera1).*\\.png")
Run Code Online (Sandbox Code Playgroud)

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

Bro*_*ieG 10

看起来默认引擎不喜欢外观,所以你需要使用Perl.这有效:

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

但这不是:

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

那么,做你想做的事:

grep("(?<!Camera1)\\.png", list.files(), perl=T, value=T)
Run Code Online (Sandbox Code Playgroud)