Как написать регулярное выражение Perl для стандартного имени файла в C / C ++ - PullRequest
0 голосов
/ 05 января 2011

У меня есть файлы со следующими соглашениями об именах:

  • * .c для исходного файла переменного тока.например, abc_test.c
  • * .cc для исходного файла c ++.например, abc_test.cc
  • * .h для файла заголовка переменного тока.например, abc_test.h
  • * .hh для заголовочного файла c ++.Например, abc_test.hh

Как написать регулярное выражение в perl для представления имен файлов в этих форматах?

Ответы [ 3 ]

2 голосов
/ 05 января 2011

Вместо использования регулярного выражения извлеките расширение и проверьте его.

use File::Basename;
my(undef, undef, $ext) = fileparse($file, qr{\.(?:cc?|hh?)$});
print $ext;

Используйте qr{\..+?}, чтобы сопоставить любое расширение.

0 голосов
/ 05 января 2011

Вы можете попробовать 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;
0 голосов
/ 05 января 2011

Простые числа, которые я могу себе представить, это \.c$, \.cc$, \.h$ и \.hh$. Простой скрипт может быть:

#!/usr/bin/env perl
if ($ARGV[0] =~ /\.c$/) { print $ARGV[0] . "\n"; }

Воспользуйтесь одним из предложений по тестированию регулярных выражений в Интернете, например, http://www.regextester.com/

...