正则表达式模式在grepl中工作,而在dir中不工作。

问题描述 投票:2回答:1

在下面的例子中,我定义了一个模式来查找路径中包含Data并以.dta结尾的文件。

如果我使用 dir 命令没有模式,根据grepl,我得到的文件符合模式。

mypattern <- '.*/Data/.*\\.dta'
files <- dir('c:/Temp/Test',recursive=T)

files
#> [1] "dir1/Data/test2.dta" "dir2/Data/test.dta"

grepl(pattern = mypattern, files)
#> [1] TRUE TRUE

为什么 dir 与相同的模式返回什么?

dir('c:/Temp/Test',pattern = mypattern, recursive=T)
#> character(0)

谢谢您的帮助。

EDIT : SessionInfo

R version 4.0.0 (2020-04-24)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 10586)

Matrix products: default

Random number generation:
 RNG:     Mersenne-Twister 
 Normal:  Inversion 
 Sample:  Rounding 

locale:
[1] LC_COLLATE=French_France.1252  LC_CTYPE=French_France.1252    LC_MONETARY=French_France.1252
[4] LC_NUMERIC=C                   LC_TIME=French_France.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base  

r regex
1个回答
3
投票

当你运行 dir(pattern=*, recursive=TRUE)జజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజ pattern 单独应用于文件 姓名 (不是路径)。试试

files <- dir(recursive=TRUE)
grep(pattern=pattern, files, values=TRUE)
© www.soinside.com 2019 - 2024. All rights reserved.