从行尾匹配 perl 模式

乔恩

我试图在我遇到的每一行的末尾去掉评论。但是,如果在开头和结尾都注释了该行,我有兴趣保留该行。

例如:

output port_a; // comments remove this port

如果我使用这个正则表达式$line =~ s/\/{2,}.*?$//;,注释将被正确删除,只产生我想用于进一步处理的模式,即:

output port_a;

但是,可能会发生在开头注释一行的情况:

// output port_a; // comments remove this port

在这种情况下,我想保留行首的注释,但删除行尾的注释。

// output port_a; 

使用相同的正则表达式$line =~ s/\/{2,}.*?$//;会删除所有内容!

我试过使用,s/\/{2,}[^\/]+$//g但这并没有去除其中有斜杠的注释,这是不正确的:

// output port_a; // comments read/write    

/在开头允许一个可选,如果有则删除尾随注释

s|^\s*/?.+?\K//.*||g;

+需要,而不是一个量词*所以不匹配唯一注释行。

The\Klookbehind 的一种形式零宽度断言它之前的模式确实存在(它不消耗任何东西)。它还会丢弃之前的所有匹配项,因此我们不必捕获它们并将它们放回原处。这也允许\K处理可变长度模式。

使用所示示例进行测试

use warnings;
use strict;
use feature 'say';

my @tests = (
    'output port_a; // comments remove this port',
    '// output port_a; // comments remove this port',
    '// output port_a; // comments read/write'
);

for (@tests)
{ 
    s|^\s*/?.+?\K//.*||gx;
    say;
}

输出

输出端口_a; 
// 输出端口_a; 
// 输出端口_a;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

PERL:匹配多种模式

来自分类Dev

Perl:regx 模式匹配

来自分类Dev

使用模式匹配的奇怪perl foreach行为

来自分类Dev

Perl替代模式匹配中的算术计算

来自分类Dev

以任意顺序匹配多个模式(Perl)

来自分类Dev

如何使用Perl进行模式匹配

来自分类Dev

Perl和Regex-单行模式匹配

来自分类Dev

仅替换为Perl模式的匹配部分

来自分类Dev

PERL中以句号“。”结尾的模式匹配

来自分类Dev

在Perl中与数组进行模式匹配

来自分类Dev

Perl:为什么这种模式匹配?

来自分类Dev

在perl中提取匹配的模式(数字+名称)

来自分类Dev

perl匹配这个但不是那个模式

来自分类Dev

sed / grep / awk?:将匹配的模式附加到行尾

来自分类Dev

Perl正则表达式无法匹配行尾

来自分类Dev

在Perl模式匹配中打印匹配的字符串

来自分类Dev

二进制模式(标准输出,“:utf8”);和 Unix 行尾在 Strawberry perl

来自分类Dev

在Perl中的模式匹配后返回单词

来自分类Dev

Eclipse:Perl EPIC调试和发布模式执行不匹配

来自分类Dev

无法使用perl和regex在阵列中保存模式匹配

来自分类Dev

同时进行Perl模式匹配和算术运算

来自分类Dev

在先前的模式匹配后,Perl替换无法正常工作

来自分类Dev

perl regex-锚点和模式匹配

来自分类Dev

Perl单线:删除具有模式匹配的行

来自分类Dev

如何使用Perl Net :: SFTP :: Foreign获取与模式匹配的文件

来自分类Dev

Perl中的字符串匹配用于多种模式

来自分类Dev

冗余交易ID,同时匹配Perl中的各种模式

来自分类Dev

在Perl程序中轻松访问模式匹配的捕获数组

来自分类Dev

在Perl中的模式匹配方面需要帮助

Related 相关文章

热门标签

归档