2012-03-21 42 views
2

我有兩句話:連接兩個字符串,以便他們共同的後綴,前綴合並

AGCGCGATAGC 
     ^^^^ 
TAGCTATATATA 
^^^^ 

第二個字TAGC是第一個字常見。所以我想要的結果是:

AGCGCGATAGCTATATATA 
     ^^^^ 

是否有Perl函數結合這些詞?使用級聯可能導致重複:

AGCGCGATAGCTAGCTATATATA 
     ^^^^^^^^ 
+1

沒有內置函數來做到這一點。你必須自己寫。 – jasonlfunk 2012-03-21 16:04:13

+0

這有幫助嗎? http://www.perlmonks.org/?node_id=484593 – Daenyth 2012-03-21 16:47:18

回答

5

一個簡單的方法做,這是一個字符加入串在一起,不是在你的拼音:

my $s1 = 'AGCGCGATAGC'; 
my $s2 = 'TAGCTATATATA'; 
$_ = "${s1}_$s2" 

然後匹配並更換最長的常見字符串在隔板的每一側:

s/([ACGT]*)_\1/$1/ 
+1

$ _ =「$ s1_ $ s2」應該是$ _ =「$ {s1} _ $ s2」(以避免錯誤)並且[ACGT] +應該是[ACGT] *(處理沒有共同子字符串的輸入)。 – 2012-03-21 22:57:08

+0

@ Ekkehard.Horner:謝謝。這就是我沒有測試的結果! – 2012-03-21 23:49:00

2

您可以使用構造是這樣的:

my $txt = 'AGCGCGATAGCD'; 
my $txt2 = 'TAGCTATATATA'; 
print "$txt\0$txt2" =~ /(.*)(.+)\x{0}\2(.+)/ ? "$1$2$3" : "$txt$txt2";