我有以下字符串。 實際上,大小可以變化。使用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