我有以下字符串。 实际上,大小可以变化。使用Perl将K个字符提取到标记的左侧和右侧
my $string = "ACCAGGGGGGCCTCCGCAG*AAGCGGTCGCCATAGTCAAAC";
我想要做的是提取10个字符的*标记的左侧和右侧, 导致:
my $output = "GCCTCCGCAG*AAGCGGTCGC";
是有一个紧凑的方式做到这一点在Perl?
我有以下字符串。 实际上,大小可以变化。使用Perl将K个字符提取到标记的左侧和右侧
my $string = "ACCAGGGGGGCCTCCGCAG*AAGCGGTCGCCATAGTCAAAC";
我想要做的是提取10个字符的*标记的左侧和右侧, 导致:
my $output = "GCCTCCGCAG*AAGCGGTCGC";
是有一个紧凑的方式做到这一点在Perl?
你去那里:
my $string = "ACCAGGGGGGCCTCCGCAG*AAGCGGTCGCCATAGTCAAAC";
my $output = substr($string, index($string, '*') - 10, 21);
这里有一个快速简便的方法使用正则表达式来做到这一点。两个{10}
代表每边匹配的字符数。
my ($output) = $string =~ m{(.{10}\*.{10})};
你说“标记”,这意味着可以有多个?他们会不会在彼此的10个字符之内?如果是这样,你想为'AAGTAAGTAAGT * AAGT * AAGTAAGTAAGT'输出什么? – ikegami 2012-08-07 04:41:07
@ikegami:我的意思是只有1个标记。我编辑了我的OP。感谢您指出这一点。 – neversaint 2012-08-07 05:18:48