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)
我尝试列出目录中 而非 以 "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)