。* \\的目的是什么?

时间:2015-01-07 21:09:57

标签: regex r

我一直在玩list.files(),我想只列出001.csv010.csv,我想出了这个命令:

list_files <- list.files(directory, pattern = ".*\\000|010", full.names = TRUE)

这段代码给了我我想要的东西,但是我并不完全理解pattern参数会发生什么。 pattern = .*\\\000如何运作?

1 个答案:

答案 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代表零个或多个字符的任何子字符串。也就是说,它匹配任何重复两次然后由两个零填充的内容。