我希望匹配任何不包括'#'的东西,但是包括'\#'

时间:2012-12-05 09:17:07

标签: regex perl

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

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

我想抓拍:

if ($line=/\#/) {

2 个答案:

答案 0 :(得分: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并修改它以在第一条评论上停止。

答案 1 :(得分:0)

试试这个

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

here on Regexr

这将匹配字符串开头(^),而不是#([^#] OR  #前面加一个反斜杠((?<=\\)#

相关问题