我正在寻找一个perl代码行,可能包含正则表达式和注释 我需要捕获所有内容,直到发表评论。所以我希望所有的字符,直到#但我在拍摄# 例如有兴趣,如果线路是:我想匹配任何不包括'#'但是包括'#'
if ($line=/\#/) { #captures lines with '#'
我想捕捉:
if ($line=/\#/) {
我正在寻找一个perl代码行,可能包含正则表达式和注释 我需要捕获所有内容,直到发表评论。所以我希望所有的字符,直到#但我在拍摄# 例如有兴趣,如果线路是:我想匹配任何不包括'#'但是包括'#'
if ($line=/\#/) { #captures lines with '#'
我想捕捉:
if ($line=/\#/) {
试试这个
^(?:[^#]|(?<=\\)#)+
这将匹配从s的开始特林(^
),这不是一个#([^#]
)OR 一个#由一个反斜杠preceeded((?<=\\)#
)
这给一试:
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并将其修改为在第一条评论中停止。
'([^#\\] | \\。)*' – Bergi
'\\#'怎么办?那么'\\\#'呢?那么'''''''''''' – memowe
谢谢。你能解释一下吗? –