Why doesn't '*' work as a perl regexp in my .Rbuildignore file?

When I try to build a package with the following in my .Rbuildignore file,

*pdf                                                                            
*Rdata  

I get the errors:

Warning in readLines(ignore_file) : incomplete final line found on '/home/user/project/.Rbuildignore'

and

invalid regular expression '*pdf'

I thought '*' was a wildcard for one or more characters?

Answers


There are two styles of pattern matching for files:

  1. regular expressions. These are used for general string pattern matching. See ?regex
  2. globs. These are typically used by UNIX shells. See ?Sys.glob

You seem to be thinking in terms of globs but .Rbuildignore uses regular expressions. To convert a glob to a regular expression try

> glob2rx("*pdf")
[1] "^.*pdf$"

In a perl regexp, use .*? as a wildcard.

But I think that what you actually want is pdf$ and Rdata$ as entries in .Rbuildignore seem to affect files whose paths they match only partially, too. $ means "end of the path".


See help(regex) for help on regular expression, esp. the Perl variant, and try

 .*pdf
 .*Rdata

instead. The 'dot' matches any chartacter, and the 'star' says that it can repeat zero or more times. I just tried it on a package of mine and this did successfully ignore a pdf vignette as we asked it to.


Need Your Help

Can't find RSA/NONE/NoPadding provider in JDK 1.8

cryptography rsa encryption java-8

I've generated a RSA key using 1024 bits and I'm trying cipher a 128 block using RSA with no padding.

Persistent http sessions (browser/instance restart ) in GAE - Java

java google-app-engine servlets

I was wondering if there was a "standard" way for handling persitent HTTP sessions in a GAE based web app. Let me explain my issues.