1

我有以下字符串。实际上,大小可以变化。

my $string = "ACCAGGGGGGCCTCCGCAG*AAGCGGTCGCCATAGTCAAAC";

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

  my $output = "GCCTCCGCAG*AAGCGGTCGC";

在 Perl 中有一种紧凑的方法吗?

4

2 回答 2

6

你去:

my $string = "ACCAGGGGGGCCTCCGCAG*AAGCGGTCGCCATAGTCAAAC";
my $output = substr($string, index($string, '*') - 10, 21);
于 2012-08-07T02:58:45.067 回答
6

这是使用正则表达式的一种快速简便的方法。两个{10}s 代表每边要匹配的字符数。

my ($output) = $string =~ m{(.{10}\*.{10})};
于 2012-08-07T03:07:37.223 回答