2

我正在寻找可能包含正则表达式和注释的 perl 代码行,我需要捕获所有内容,直到出现注释。所以我想要所有字符直到 # 但我有兴趣捕获 # 例如,如果该行是:

if ($line=/\#/) {  #captures lines with '#'

我想捕捉:

if ($line=/\#/) {
4

2 回答 2

3

试试这个:

use PPI;
my $ppi = PPI::Document->new('source.pl');
my $source = '';
for my $token ( @{ $ppi->find("PPI::Token") } ) {
    last if $token->isa("PPI::Token::Comment");
    $source .= $token;
}
print $source;

这应该可以处理除 here-docs 之外的几乎所有内容。如果你需要处理这些,首先复制 PPI::Document::serialize 并修改它以停止第一个评论。

于 2012-12-05T09:38:55.390 回答
0

尝试这个

^(?:[^#]|(?<=\\)#)+

在 Regexr 上查看

这将匹配字符串 ( ^) 开头的任何内容,不是 # ( [^#]) 前面有反斜杠 ( (?<=\\)#)的 #

于 2012-12-05T09:36:49.773 回答