我一直在玩list.files()
,我想只列出001.csv
到010.csv
,我想出了这个命令:
list_files <- list.files(directory, pattern = ".*\\000|010", full.names = TRUE)
这段代码给了我我想要的东西,但是我并不完全理解pattern参数会发生什么。 pattern = .*\\\000
如何运作?
答案 0 :(得分:14)
\\0
是一个反向引用,它将整个正则表达式匹配插入到该点。比较以下内容以了解其含义:
sub("he", "", "hehello")
## [1] "hello"
sub("he\\0", "", "hehello")
## [1] "llo"
使用"001.csv"
或"009.csv"
等字符串时,.*
匹配零个字符,\\0
一次重复这些零字符,{{1}匹配字符串中的前两个零。成功了!
此模式不会匹配00
或"100.csv"
,因为它无法找到任何匹配的内容加倍,然后紧跟两个"010.csv"
秒。但 会匹配0
,因为它与"1100.csv"
匹配,然后将其加倍,然后找到两个1
。
因此,回顾一下,0
匹配以".*\\000"
开头的任何字符串,其中xx00
代表零个或多个字符的任何子字符串。也就是说,它匹配任何重复两次然后由两个零填充的内容。