Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
2.5k views
in Technique[技术] by (71.8m points)

regex - list.files pattern argument in R, extended regular expression use

I run

  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=''))

and want to list all the files that begin with QWE and end with 2011.3. I tried

list.files('./junk_data/',pattern='QWE....2011.3',full.names=T)

and

list.files('./junk_data/',pattern='QWE....2011.3',full.names=T,perl=T)

but I guess '.' doesn't mean one what I think, as I get none of the files I want.

I tried a few tutorials on regex, but no joy.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

As Arun showed in his example, a dot usually means "match any character", so to match a dot you need to escape it: \.. You can create the pattern most easily with glob2rx, which uses * as a wildcard and matches other characters as though they are fixed.

glob2rx("QWE*2011.3")   #"^QWE.*2011\.3$"
list.files("./junk_data/", pattern = glob2rx("QWE*2011.3"), full.names = TRUE)

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...