如何在数据位置打印匹配的字符串?

3 regex perl

我试图在数据位置打印匹配的字符串,我该怎么办?

$at ="at";
@ar = <DATA>;
@xxv = map(m/$at/g, @ar);
print "@ar";
print @xxv;
print "\n";
__DATA__
atgacaagcagacccaggggatacgat
Run Code Online (Sandbox Code Playgroud)

我预计输出是

    atgacaagcagacccaggggatacgat
    at                  at   at
Run Code Online (Sandbox Code Playgroud)

Avi*_*Raj 6

通过获得所需的输出 s///

$at ="at";
$ar = <DATA>;
print $ar;
$ar =~ s/$at(*SKIP)(*F)|./ /g;
print $ar;
__DATA__
atgacaagcagacccaggggatacgat
Run Code Online (Sandbox Code Playgroud)

输出:

atgacaagcagacccaggggatacgat
at                  at   at
Run Code Online (Sandbox Code Playgroud)

$at(*SKIP)(*F)扩展变量$at并将存储在变量中的同一组字符与输入字符串相匹配.以下(*SKIP)(*F)导致匹配失败并强制右侧的模式|与剩余的字符匹配.所以.匹配除跳过的字符之外的所有字符.用空格替换那些匹配的字符将为您提供所需的输出.

参考文献: