R中list.files中的负超前断言 [英] Negative look-ahead assertion in list.files in R

查看:67
本文介绍了R中list.files中的负超前断言的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I try to list all files in a directory that do not start with "Camera1", but end with ".png". For doing so, I am using a regular expression in list.files in R. To exclude "Camera1", I tried to use a negative lookahead, but it doesn't work. Where is my mistake? ;)

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

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

I get the error: invalid 'pattern' regular expression Thanks in advance :)

推荐答案

看起来像默认引擎不喜欢环顾四周,因此您需要使用Perl.这有效:

Looks like the default engine doesn't like lookarounds, so you need to use Perl. This works:

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'

所以,要做你想做的事:

So, to do what you what you want:

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

这篇关于R中list.files中的负超前断言的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆