我有以下命名約定文件:如何寫Perl的正則表達式在C標準文件名/ C++
- * .C的C源文件。例如abc_test.c
- * .cc對於C++源文件。例如abc_test.cc
- * .h用於c頭文件。例如abc_test.h
- * .hh用於C++頭文件。例如abc_test.hh
我怎麼能寫在Perl的正則表達式來表示這些格式的文件名?
我有以下命名約定文件:如何寫Perl的正則表達式在C標準文件名/ C++
我怎麼能寫在Perl的正則表達式來表示這些格式的文件名?
我能想象的簡單是\.c$
,\.cc$
,\.h$
和\.hh$
。一個簡單的腳本可以是:
#!/usr/bin/env perl
if ($ARGV[0] =~ /\.c$/) { print $ARGV[0] . "\n"; }
使用在線正則表達式測試產品之一,例如, http://www.regextester.com/
你可以試試File::Basename - 解析文件路徑爲目錄,文件名和後綴,0像
use File::Basename;
my $from_file = 'abc_test.hh';
(my $base,my $dir,my $ext) = fileparse($from_file,qr{\.(?:cc?|hh?)$});
print $ext;
我不認爲'qr {c,cc,h,hh}'會做你認爲它會做的事情,你可能需要'qw {c cc h hh}'。 – 2011-01-05 18:58:20
而不是使用正則表達式,提取延伸,做你的支票反對。
use File::Basename;
my(undef, undef, $ext) = fileparse($file, qr{\.(?:cc?|hh?)$});
print $ext;
使用qr{\..+?}
來匹配任何擴展名。
- 用於PERL。 http://perldoc.perl.org/perlfaq1.html#What%27s-the-difference-between-%22perl%22-and-%22Perl%22? – Hugmeir 2011-01-05 12:59:58
永遠不要寫「PERL」,因爲儘管perl不是首字母縮略詞,還是apocryphal民間傳說和事後擴張。 – 2011-01-05 13:40:34
@Hugmeir,你可以通過使用http://search.cpan.org/perldoc?Inline::PERL – daotoad 2011-01-06 01:39:49