使用Perl样式的R NAMESPACE导出模式(非消费正则表达式)

时间:2017-09-25 19:03:49

标签: r regex

我想从一个R-package calle myPackageId中导出所有函数,这些函数不是以句点开头而是以字符串“myPackageId_”开头。 具有第二种模式的函数由Cc代码中的Rcpp自动生成为“RcppExport SEXP myPackageId_cFunctionname”,不应由包导出。

我找到了一个使用非消费正则表达式的解决方案:

exportPattern("(?=^[^\\.])(?=^(?!myPackageId_))")   

这适用于带有选项perl = TRUE的R grep。但是,带有扩展RE和R CMD INSTALL的默认R grep会抱怨模式无效。

words <- c(".test","test","myPackageId_test")
grep("(?=^[^\\.])(?=^(?!myPackageId_))",words, perl=TRUE)
grep("(?=^[^\\.])(?=^(?!myPackageId_))",words)

在上面的例子中,单词“test”将被接受,而其他单词“.test”和“myPackageId_test”将不被接受。

预期输入均为valid R names。这些是由没有空格的ASCII字符组成的常用单词。在R中,句号“。”也可以起名。

我是否可以使用grep选项perl = FALSE来实现相同的目标? 或者,我可以在NAMESPACE文件中以某种方式告诉R使用perl变体和grep吗?

0 个答案:

没有答案