我想列出目录中开头有“xyz”的所有文件,第一个下划线后面有一个2。
例如,xyzfjd_2_34_1.png
,xyz-39_2dog.jpg
可行,而xyzdog_3_dog.png
无效。
我试过
list.files(dir, pattern="^xyz*_2*");
这显然是错误的,主要是因为我甚至不知道我在做什么......
答案 0 :(得分:3)
没有下划线匹配的文件名吗?我假设没有。
我认为你正在为任何角色解释*
。相反,.
是任何角色。 *
是“0次或更多次”。因此,您的模式^xyz*_2*
可以匹配xy_
和xyzzzz_222
。它与xyz1_2
不匹配。
尝试:
list.files(dir, pattern = "^xyz[^_]*_2")
^
文件名的开头xyz
[^_]*
任何不是_
的字符组合(包括空字符串)_2
,下划线后跟两个。我不担心名称的其余部分,因为模式只需要匹配部分文件名。