Аргумент шаблона list.files в R, расширенное использование регулярного выражения
Я бегу
dir.create('./junk_data')
file.create(paste('./junk_data/QWE',01:12,01:31,2005:2015,'.3',sep=''))
file.create(paste('./junk_data/RTY',01:12,01:31,2005:2015,'.3',sep=''))
и хочу перечислить все файлы, которые начинаются с QWE
и заканчивается 2011.3
, Я старался
list.files('./junk_data/',pattern='QWE....2011.3',full.names=T)
а также
list.files('./junk_data/',pattern='QWE....2011.3',full.names=T,perl=T)
но я думаю '.'
это не то, что я думаю, потому что я не получаю ни одного файла, который хочу.
Я попробовал несколько уроков по регулярным выражениям, но без радости.
1 ответ
Решение
Как показал Арун в своем примере, точка обычно означает "соответствовать любому символу", поэтому для сопоставления с точкой вам нужно ее избежать: \\.
, Вы можете создать шаблон наиболее легко с glob2rx
, который использует *
как подстановочный знак и совпадает с другими символами, как будто они исправлены.
glob2rx("QWE*2011.3") #"^QWE.*2011\\.3$"
list.files("./junk_data/", pattern = glob2rx("QWE*2011.3"), full.names = TRUE)