用Perl提取标记左右K个字符

tuwxkamq  于 12个月前  发布在  Perl
关注(0)|答案(2)|浏览(350)

我有以下字符串。实际上,尺寸可以变化。

my $string = "ACCAGGGGGGCCTCCGCAG*AAGCGGTCGCCATAGTCAAAC";

我想做的是从 * 标记的左边和右边提取10个字符,结果是:

my $output = "GCCTCCGCAG*AAGCGGTCGC";

在Perl中是否有一种简洁的方法来实现它?

ih99xse1

ih99xse11#

这是一个非正则表达式的解决方案:

my $string = "ACCAGGGGGGCCTCCGCAG*AAGCGGTCGCCATAGTCAAAC";
my $marker = '*';
my $offset_from_marker = 10;
my length = 21;
my $output = substr($string, index($string, $marker) - offset_from_marker, $length);
5n0oy7gb

5n0oy7gb2#

这里有一个使用正则表达式的快速简单的方法。两个{10}表示每边要匹配的字符数。

my ($output) = $string =~ m{(.{10}\*.{10})};

相关问题