我有以下代码,成功打印出所有匹配我的正则表达式的字符串到控制台(perl myscript.pl sample_text.txt
).
$filename=shift;
open text, $filename or die "error opening $filename\n";
while (my $line = <text>) {
push @matches, $1 while $line
=~ m{
(( [ACGT]{6} )
CTGA
[ACGT]
GAG
( [ACGT]{3,6} )
[ACGT]{2,100}
(??{ $3 =~ tr/ACGT/TGCA/r })
( CGAAA[ACGT] ))
}xgi;
}
print "$_\n" for @matches;
Run Code Online (Sandbox Code Playgroud)
(这只是我的正则表达式的简化版本,我的捕获组更加复杂,并且没有固定的长度.)
我的sample_text可以在这里下载.
我希望输出保持原样(每行一个匹配),但是我希望匹配我的正则表达式中第一个 ( [ACGT]{6} )
和最后一个 ( CGAAA[ACGT] )
捕获组的子字符串在控制台中打印整个匹配时围绕它们使用括号.
举个例子,当我在上面的示例文件上运行上面的整个脚本时,我得到了附件(sample_text
),我得到的一个匹配结果是:
TTTATGCTGATGAGAAAAAACATAAGAAAACGTATAATTTTTTCTAAAAAAGGAAAAAAGACCGAAATTTTAAGCTGTTTTTCGAAAA
我想要看到这样的输出:
(TTTATG)CTGATGAGAAAAAACATAAGAAAACGTATAATTTTTTCTAAAAAAGGAAAAAAGACCGAAATTTTAAGCTGTTTTT(CGAAAA)