我有两句话:连接两个字符串,以便他们共同的后缀,前缀合并
AGCGCGATAGC
^^^^
TAGCTATATATA
^^^^
第二个字TAGC
是第一个字常见。所以我想要的结果是:
AGCGCGATAGCTATATATA
^^^^
是否有Perl函数结合这些词?使用级联可能导致重复:
AGCGCGATAGCTAGCTATATATA
^^^^^^^^
我有两句话:连接两个字符串,以便他们共同的后缀,前缀合并
AGCGCGATAGC
^^^^
TAGCTATATATA
^^^^
第二个字TAGC
是第一个字常见。所以我想要的结果是:
AGCGCGATAGCTATATATA
^^^^
是否有Perl函数结合这些词?使用级联可能导致重复:
AGCGCGATAGCTAGCTATATATA
^^^^^^^^
一个简单的方法做,这是一个字符加入串在一起,不是在你的拼音:
my $s1 = 'AGCGCGATAGC';
my $s2 = 'TAGCTATATATA';
$_ = "${s1}_$s2"
然后匹配并更换最长的常见字符串在隔板的每一侧:
s/([ACGT]*)_\1/$1/
$ _ =“$ s1_ $ s2”应该是$ _ =“$ {s1} _ $ s2”(以避免错误)并且[ACGT] +应该是[ACGT] *(处理没有共同子字符串的输入)。 – 2012-03-21 22:57:08
@ Ekkehard.Horner:谢谢。这就是我没有测试的结果! – 2012-03-21 23:49:00
您可以使用构造是这样的:
my $txt = 'AGCGCGATAGCD';
my $txt2 = 'TAGCTATATATA';
print "$txt\0$txt2" =~ /(.*)(.+)\x{0}\2(.+)/ ? "$1$2$3" : "$txt$txt2";
没有内置函数来做到这一点。你必须自己写。 – jasonlfunk 2012-03-21 16:04:13
这有帮助吗? http://www.perlmonks.org/?node_id=484593 – Daenyth 2012-03-21 16:47:18