2010-11-30 5 views

Répondre

8

Il y a deux styles de motif correspondant à des fichiers:

  1. expressions régulières. Ceux-ci sont utilisés pour la correspondance générale des chaînes de caractères. Voir? Regex
  2. globes. Ils sont généralement utilisés par les shells UNIX. Voir? Sys.glob

Vous semblez penser en termes de globs mais .Rignignore utilise des expressions régulières. Pour convertir un glob en une expression régulière, essayez

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

Dans une expression rationnelle Perl, utilisez .*? comme caractère générique.

Mais je pense que ce que vous voulez réellement est pdf$ et Rdata$ car les entrées dans .Rbuildignore semblent affecter les fichiers dont les chemins ne correspondent que partiellement. $ signifie "fin du chemin".

+0

voulez-vous dire que je devrais utiliser. * Pdf $ et. * Rdata $? –

+1

@David: non. 'pdf $' et 'Rdata $' – thejh

5

* est un quantificateur qui attache à une expression précédente pour permettre entre 0 et répétitions infinies de celui-ci. Puisque vous n'avez pas précédé le quantificateur avec une expression, ceci est une erreur.

. est une expression qui correspond à n'importe quel caractère. Donc je soupçonne que vous voulez .*pdf, .*Rdata, etc.

8

Voir help(regex) pour l'aide sur l'expression régulière, esp. la variante Perl, et essayez

.*pdf 
.*Rdata 

à la place. Le 'point' correspond à n'importe quel caractère, et 'étoile' dit qu'il peut répéter zéro ou plusieurs fois. Je l'ai juste essayé sur un paquet du mien et ceci a ignoré avec succès une vignette de pdf comme nous l'avons demandé.

Questions connexes