如何在R语言list.files中用正则匹配aaaa80至aaaa06格式的文件?
解决方案
直接使用以下正则表达式作为pattern参数,就能精准筛选出aaaa80.txt至aaaa06.txt的文件:
all.files <- as.list(list.files(path="~/datos", pattern = "^aaaa(8[0-9]|9[0-9]|0[0-6])\\.txt$"))
正则表达式解释
^:锁定文件名开头,确保必须以aaaa开头,避免匹配到类似xaaaaXX.txt的无效文件(8[0-9]|9[0-9]|0[0-6]):拆分三个匹配分支,覆盖目标年份范围:8[0-9]:匹配80-89的两位数字9[0-9]:匹配90-99的两位数字0[0-6]:匹配00-06的两位数字
\\.txt$:锁定文件名结尾,确保必须以.txt结尾,避免匹配到aaaaXX.txt.bak这类带额外后缀的文件
你之前的正则问题所在
你用的aaaa[8-9,0]只限制了aaaa后的第一个字符是8、9或0,但完全没约束第二个字符,所以像aaaa07.txt这类文件会因为第一个字符是0被误匹配进来,达不到筛选要求。
内容的提问来源于stack exchange,提问作者Juan_Ramon Lacalle
相关产品推荐
相关产品推荐

