У меня есть файлы со следующими соглашениями об именах:
Как написать регулярное выражение в perl для представления имен файлов в этих форматах?
Вместо использования регулярного выражения извлеките расширение и проверьте его.
use File::Basename; my(undef, undef, $ext) = fileparse($file, qr{\.(?:cc?|hh?)$}); print $ext;
Используйте qr{\..+?}, чтобы сопоставить любое расширение.
qr{\..+?}
Вы можете попробовать File :: Basename - Разобрать пути к файлам в каталог, имя файла и суффикс, как
use File::Basename; my $from_file = 'abc_test.hh'; (my $base,my $dir,my $ext) = fileparse($from_file,qr{\.(?:cc?|hh?)$}); print $ext;
Простые числа, которые я могу себе представить, это \.c$, \.cc$, \.h$ и \.hh$. Простой скрипт может быть:
\.c$
\.cc$
\.h$
\.hh$
#!/usr/bin/env perl if ($ARGV[0] =~ /\.c$/) { print $ARGV[0] . "\n"; }
Воспользуйтесь одним из предложений по тестированию регулярных выражений в Интернете, например, http://www.regextester.com/