R - 正则表达式

时间:2013-11-01 00:43:06

标签: regex r

我想列出目录中开头有“xyz”的所有文件,第一个下划线后面有一个2。

例如,xyzfjd_2_34_1.pngxyz-39_2dog.jpg可行,而xyzdog_3_dog.png无效。

我试过

list.files(dir, pattern="^xyz*_2*");

这显然是错误的,主要是因为我甚至不知道我在做什么......

1 个答案:

答案 0 :(得分:3)

没有下划线匹配的文件名吗?我假设没有。

我认为你正在为任何角色解释*。相反,.是任何角色。 *是“0次或更多次”。因此,您的模式^xyz*_2*可以匹配xy_xyzzzz_222。它与xyz1_2不匹配。

尝试:

list.files(dir, pattern = "^xyz[^_]*_2")
  • ^文件名的开头
  • xyz
  • [^_]*任何不是_的字符组合(包括空字符串)
  • _2,下划线后跟两个。

我不担心名称的其余部分,因为模式只需要匹配部分文件名。