簡體   English   中英

為什么'*'在我的.Rbuildignore文件中不能作為perl regexp工作?

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

當我嘗試在我的.Rbuildignore文件中構建包含以下內容的包時,

*pdf                                                                            
*Rdata  

我得到錯誤:

readLines(ignore_file)中的警告:在'/home/user/project/.Rbuildignore'上找到不完整的最后一行

無效的正則表達式'* pdf'

我以為'*'是一個或多個角色的通配符?

有關help(regex)的幫助,請參閱help(regex) ,尤其是 Perl變種,並嘗試

 .*pdf
 .*Rdata

代替。 'dot'匹配任何圖表,'star'表示它可以重復零次或多次。 我只是嘗試了我的一個包,這確實忽略了我們要求的pdf插圖。

文件的模式匹配有兩種樣式:

  1. 常用表達。 這些用於一般字符串模式匹配。 看?正則表達式
  2. 水珠。 這些通常由UNIX shell使用。 見?Sys.glob

你似乎在考慮使用globs,但是.Rbuildignore使用正則表達式。 要將glob轉換為正則表達式,請嘗試

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

在perl regexp中,使用.*? 作為通配符。

但我認為你真正想要的是pdf$Rdata$因為Rdata$中的條目似乎也影響了它們只匹配部分路徑的文件。 $表示“路徑的終點”。

*是一個量化器,它附加到前一個表達式,允許在0和無限重復之間。 由於您沒有在量詞之前加上表達式,因此這是一個錯誤。

. 是一個匹配任何字符的表達式。 所以我懷疑你想要.*pdf.*Rdata

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM