Perl中是否有正则表达式来查找文件的扩展名?例如,如果我有“test.exe
”,我将如何获得“.exe
”?Perl中是否有正则表达式来查找文件的扩展名?
回答
my $file = "test.exe";
# Match a dot, followed by any number of non-dots until the
# end of the line.
my ($ext) = $file =~ /(\.[^.]+)$/;
print "$ext\n";
\.[^\.]*$
这会给你最后一个点(包括点本身)之后的所有内容,直到字符串结束。
你可以使用File::Basename提取任意文件扩展名:
use strict;
use warnings;
use File::Basename;
my $ext = (fileparse("/foo/bar/baz.exe", qr/\.[^.]*/))[2];
print "$ext";
使用文件::基名
use File::Basename;
($name,$path,$suffix) = fileparse("test.exe.bat",qr"\..[^.]*$");
print $suffix;
我从来没有想过File :: Basename对于这个工作是有好处的,因为你必须提供你可以用匹配运算符来完成相同事情的模式。 – 2010-03-18 03:58:03
如果它只是为了获得扩展,一个正常的正则表达式就足够了。但是File :: Basename也会解析路径的其余部分。如果OP需要除扩展需要以外还有它们,File :: Basename派上用场。 – ghostdog74 2010-03-18 04:39:17
警告:我有用户命名为'filename..doc'的文件,上面后缀的regep将作为扩展名返回'..doc'。如果按照这个方向进行,则优先选择@toolic回复中的一个(或者文件:Basename的Perl文档)。 – 2013-10-10 16:17:35
这是一个正则表达式匹配模式n级扩展文件(例如,.tar.gz或.tar.bz2)。
((\.[^.\s]+)+)$
例子:
#!/usr/bin/perl
my $file1 = "filename.tar.gz.bak";
my ($ext1) = $file1 =~ /((\.[^.\s]+)+)$/;
my $file2 = "filename.exe";
my ($ext2) = $file2 =~ /((\.[^.\s]+)+)$/;
my $file3 = "filename. exe";
my ($ext3) = $file3 =~ /((\.[^.\s]+)+)$/;
my $file4 = "filename.............doc";
my ($ext4) = $file4 =~ /((\.[^.\s]+)+)$/;
print "1) $ext1\n"; # prints "1) .tar.gz.bak"
print "2) $ext2\n"; # prints "2) .exe"
print "3) $ext3\n"; # prints "3) "
print "4) $ext4\n"; # prints "4) .doc"
- 1. 正则表达式查找文件扩展名
- 2. 正则表达式来替换文件扩展名
- 3. 正则表达式来检测文件扩展名
- 4. 正则表达式检查文件扩展名和无标题
- 5. 正则表达式来查找文件夹中的文件
- 6. 正则表达式的问题,文件扩展名的Python 2.7
- 7. .htaccess正则表达式匹配文件扩展名或无扩展名
- 8. 扩展名为c的文件正则表达式#
- 9. 正则表达式匹配的文件扩展名
- 10. 使用正则表达式检查PHP中的文件扩展名
- 11. 匹配文件扩展名 - 正则表达式nodejs
- 12. 正则表达式添加文件扩展名
- 13. 正则表达式驼峰文件名,也删除扩展
- 14. Java文件扩展名正则表达式
- 15. 阶正则表达式:提取文件扩展名
- 16. 正则表达式匹配url无文件扩展名
- 17. 正则表达式:我如何捕获文件扩展名?
- 18. C#正则表达式获取没有扩展名的文件名?
- 19. Logstash:正则表达式匹配的文件没有扩展
- 20. 使用Dreamweaver的正则表达式来添加文件扩展名
- 21. 在查询中查找所有表名的正则表达式
- 22. 正则表达式来查找公式
- 23. 使用正则表达式来查找文件中的值
- 24. 正则表达式来查找HTML中的WSDL文件
- 25. 查找文件用正则表达式
- 26. 使用正则表达式查找具有确切扩展名的文件(并且没有任何内容)
- 27. 正则表达式返回文件名,删除路径和文件扩展名
- 28. Python正则表达式匹配整个文件名包含文件扩展名
- 29. 图像常见文件扩展名的正则表达式是什么样的?
- 30. 在Python中扩展正则表达式
@ Ether..I认为它的一个很大的问题。我已经开始关闭Perl十多年了,有时我只想快速参考一下。 – Anshu 2012-01-13 11:35:44