您好我是Perl的新手,现在正在寻求帮助来解析一行简单的代码。
我需要解析的是
#include "filename"
我只需要正则表达式来获取文件名。
我知道Python中的split方法可以做到这一点,不知道是否有相似之处 Perl中的func
由于
答案 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
行上不返回任何内容的优势,而不是在输入文件包含任何其他带有双引号文本的行时返回误报。