可选的正则表达式匹配?

时间:2011-05-12 01:51:47

标签: regex perl

如何匹配正则表达式中的可选字符?

我正在尝试编写一个小文件,对我们的NAS进行一些管理。

脚本遍历指定根文件夹中的文件夹。

对于我的测试,根目录为C:\Users\Solignis\Desktop\Orders

这是我第一次匹配的地方,它会检查文件是否符合我们的标准名称约定,即城市+ 3位数文件夹+ 3位数文件编号。

有时虽然我们有额外的文件,其上有_1 or _2来表示其他页面。

如何让这个正则表达式表达式在匹配中符合“可选”_1 or _2 and sometimes _3

代码:

$file =~ /^ ((C[A|F|L]|ME)) (\d{3}) (\d{3}) \. (PDF) /xmi

我确信这很容易,因为我必须“钻”到我制作的这个巨大的数组哈希中,我仍然有大脑循环,就像某些数组中的25k文件一样。

非常感谢任何帮助。

由于

2 个答案:

答案 0 :(得分:8)

(_[1-3])?

这样的东西

?匹配零个或一个实例。

可能就是你要找的东西。

答案 1 :(得分:4)

(?: _[1-3] )?这样的东西,如果不想抓住这个群体。