Аргумент шаблона 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)
Другие вопросы по тегам