好的,我有以下文件:
total 32
drwxr-xr-x 12 al staff 408B Feb 28 11:36 ./
drwxr-xr-x+ 40 al staff 1.3K Feb 28 10:07 ../
drwxr-xr-x 3 al staff 102B Oct 19 20:38 Install OS X Yosemite.app/
-rw-r--r-- 1 al staff 7B Dec 15 13:35 file1
-rw-r--r-- 1 al staff 4B Dec 15 13:35 file2
-rw-r--r-- 1 al staff 11B Dec 15 13:35 file3.part
-rw-r--r-- 1 al staff 0B Feb 28 11:36 file4.art
-rwxr-xr-x 1 al staff 1.9K Feb 28 11:35 show.pl*
drwxr-xr-x 2 al staff 68B Feb 28 10:07 test1/
drwxr-xr-x 6 al staff 204B Feb 28 10:12 test2/
drwxr-xr-x 3 al staff 102B Feb 28 10:07 test3/
drwxr-xr-x 3 al staff 102B Feb 28 10:12 test4/
现在我需要一个可以执行以下操作的正则表达式:
以字符串.part结尾的任何类型 NOT 的3个或更多字符(省略。和..)(但以其他任何结尾都可以)。
以下几乎可以使用,但它不会匹配.app和.art(它应该)。
print $file =~ m/^.{3,}[^(\.part)]$/i;
当我说的时候请相信我......我已经尝试过了(为了一个漫长的时间)
答案 0 :(得分:0)
您需要在开始时使用否定前瞻断言。
print $file =~ m/^(?!.*\.part$).{3,}/i;
断言要匹配的字符串最后不包含.part
字符串。如果是,则匹配具有三个或更多字符的字符串。 $
声称我们已经结束了。