正则匹配目录问题求教?

正则匹配目录问题求教?

比如 一个文件中的信息如下:
/aaa/bbb/ccc.txt
/ddd/ccc/ddd/eee/txt
/dd/sdf/ees.ttl
/eee/ccc/sss.txt
/aaa/bbb.ext
/ccc/mmm.ett
...


如何来统计这个文件里面的二级文件夹和一级文件夹(用正则表达式)?
如二级文件夹 /dd/sdf/ees.ttl


[Copy to clipboard] [ - ]
CODE:
if($aa =~ /\/.+\/.+\/.+\..+/){
        print "2\n";
}else{
        print "1\n";
}

.+应该是匹配任意非空字符吧,你这个好像不起作用。。。。
3级的也要吗?
.+应该也匹配'/'吧。。。
我写的是 $aa =! m|^\/\w+\/\w+\w+|
可是这个不行,想不通
另外二级文件夹后面的文件可能没有后缀
比如:
/a/b/c


QUOTE:
原帖由 大司南 于 2008-4-8 16:11 发表
.+应该也匹配'/'吧。。。
我写的是 $aa =! m|^\/\w+\/\w+\w+|
可是这个不行,想不通

这个意思?
m|(/\w+){3}|
是的,我的意思是要求只匹配二级文件夹和一级文件夹,是不是这样可以
$aa =~ m|(\/w+){3} && $aa =~ m|\/{3}
感觉有点晕。。。。


QUOTE:
原帖由 大司南 于 2008-4-8 16:19 发表
是的,我的意思是要求只匹配二级文件夹和一级文件夹,是不是这样可以
$aa =~ m|(\/w+){3} && $aa =~ m|\/{3}
感觉有点晕。。。。



[Copy to clipboard] [ - ]
CODE:
open(FF,"1.txt");
while(<FF>){

if(/(\/\w+){3}\/\w+\.\w+/){
        print "3-$_\n";
}elsif(/(\/\w+){2}\/.+\.\w.+/){
        print "2-$_\n";
}elsif(/(\/\w+){1}\/.+\.\w+/){
        print "1-$_\n";
}else{
        print "no-$_\n";
}

}
close(FF);

哦,有没有别的方法?