简单的Perl正则表达式

时间:2013-03-13 06:24:02

标签: regex perl

您好我是Perl的新手,现在正在寻求帮助来解析一行简单的代码。

我需要解析的是

#include "filename"

我只需要正则表达式来获取文件名。

我知道Python中的split方法可以做到这一点,不知道是否有相似之处 Perl中的func

由于

3 个答案:

答案 0 :(得分:5)

my ($fn) = $include =~ /"([^"]*)"/;

my ($fn) = $include =~ /^\s*#\s*include\s*"([^"]*)"/;

答案 1 :(得分:1)

如果你真正需要的是从一堆c / c ++文件中提取标题,你可以使用ack轻松完成:

ack --cc '#include "([^"]+)' -h --output=\$1  | sort | uniq

答案 2 :(得分:1)

可以在Perl中使用split执行此操作:

my $fn = (split('"', $include_line))[1];

......但这是一种非常迟钝的方式。我选择了

my ($fn) = $line =~ /^#include +"([^"]+)"/;

相反,它更清晰,并且还具有在非#include行上不返回任何内容的优势,而不是在输入文件包含任何其他带有双引号文本的行时返回误报。