【发布时间】:2013-11-01 00:43:06
【问题描述】:
我想列出目录中以“xyz”开头且第一个下划线后有 2 的所有文件。
例如,xyzfjd_2_34_1.png、xyz-39_2dog.jpg 可以工作,而xyzdog_3_dog.png 则不能工作。
我试过了
list.files(dir, pattern="^xyz*_2*");
这显然是错误的,主要是因为我什至不知道自己在做什么......
【问题讨论】:
我想列出目录中以“xyz”开头且第一个下划线后有 2 的所有文件。
例如,xyzfjd_2_34_1.png、xyz-39_2dog.jpg 可以工作,而xyzdog_3_dog.png 则不能工作。
我试过了
list.files(dir, pattern="^xyz*_2*");
这显然是错误的,主要是因为我什至不知道自己在做什么......
【问题讨论】:
没有下划线的文件名匹配吗?我假设没有。
我认为您正在为任何字符解释 *。相反,. 是任何字符。 * 是“0 次或多次”。所以你的模式^xyz*_2* 可以匹配xy_ 和xyzzzz_222。它不会匹配 xyz1_2。
试试:
list.files(dir, pattern = "^xyz[^_]*_2")
^文件名开头xyz[^_]* 任何非_ 的字符组合(包括空字符串)_2,下划线后跟一个 2。我不担心名称的其余部分,因为模式只需要匹配文件名的一部分。
【讨论】: