可选正则表达式匹配?
如何匹配正则表达式中的可选字符?可选正则表达式匹配?
我想写一个小文件,对我们的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文件的阵列。
任何帮助将不胜感激。
感谢
喜欢的东西(_[1-3])?
?
匹配零个或一个实例。
可能是你在找什么。
让我试试 – ianc1215 2011-05-12 02:04:53
可以扩展匹配'_ \ d *'? – ianc1215 2011-05-12 02:06:16
@Solignis是 - 没问题 – jisaacstone 2011-05-12 02:07:43
类似(?: _[1-3])?
如果不想抓住这个组。
'[A | F | L]'是否适合你? '[AFL]'是正确的,恕我直言,还有双括号'((...))'到'(C [AFL] | ME)'会更好 – YOU 2011-05-12 01:54:57
这样做是一回事吗?如果这样对我有用,那么它也适用于每个字母之间的交替。但你的方式不那么混乱。 – ianc1215 2011-05-12 01:59:14
@Solignis,不相同,我认为你的正则表达式将匹配名为'“C | 111222.PDF”'的文件。和双括号会让你的$ 1和$ 2是一样的。但只是将'((...))'改成'(...)'会破坏你的代码,你需要更新使用$ 3,$ 4,$ 5,恕我直言的代码。 – YOU 2011-05-12 02:01:26