如何在 C/C 中为标准文件名编写 perl 正则表达式++

发布于 2024-10-10 07:15:44 字数 365 浏览 3 评论 0原文

我的文件具有以下命名约定:

  • *.c 表示 ac 源文件。例如 abc_test.c
  • *.cc 用于 C++ 源文件。例如 abc_test.cc
  • *.h 表示 ac 头文件。例如 abc_test.h
  • *.hh 用于 C++ 头文件。例如 abc_test.hh

我如何在 perl 中编写正则表达式来表示这些格式的文件名?

I have files with following naming conventions:

  • *.c for a c source file. eg abc_test.c
  • *.cc for a c++ source file. eg abc_test.cc
  • *.h for a c header file. eg abc_test.h
  • *.hh for a c++ header file. eg abc_test.hh

How can i write a regular expression in perl to represent file names in these formats?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

∞觅青森が 2024-10-17 07:15:44

不要使用正则表达式,而是提取扩展名并对其进行检查。

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

使用 qr{\..+?} 匹配任何扩展名。

Rather than use a regular expression, extract the extension and do your checks against it.

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

Use qr{\..+?} to match any extension.

岁吢 2024-10-17 07:15:44

我能想象的最简单的是 \.c$\.cc$\.h$\.hh$< /代码>。一个简单的脚本可以是:

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

使用在线正则表达式测试产品之一,例如 http://www.regextester.com/

The simples I can imagine is \.c$, \.cc$, \.h$ and \.hh$. A simple script could be:

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

Use one of the online regex test offerings, e.g. http://www.regextester.com/

圈圈圆圆圈圈 2024-10-17 07:15:44

您可以尝试 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;

You can try File::Basename - Parse file paths into directory, filename and suffix,
like

    use File::Basename;
    my $from_file = 'abc_test.hh';
    (my $base,my $dir,my $ext) = fileparse($from_file,qr{\.(?:cc?|hh?)$});
    print $ext;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文