连接两个字符串,以便合并它们的公共后缀和前缀

Bio*_*Ram 2 regex string perl concatenation

我有两个字:

AGCGCGATAGC
       ^^^^
TAGCTATATATA
^^^^
Run Code Online (Sandbox Code Playgroud)

第二个单词TAGC与第一个单词相同.所以我想得到的结果是:

AGCGCGATAGCTATATATA
       ^^^^
Run Code Online (Sandbox Code Playgroud)

是否有任何结合这些词的Perl功能?使用串联可能会导致重复:

AGCGCGATAGCTAGCTATATATA
       ^^^^^^^^
Run Code Online (Sandbox Code Playgroud)

Jon*_*rdy 5

一个简单的方法是将字符串与不在字母表中的字符连接在一起:

my $s1 = 'AGCGCGATAGC';
my $s2 = 'TAGCTATATATA';
$_ = "${s1}_$s2"
Run Code Online (Sandbox Code Playgroud)

然后在分隔符的每一侧匹配并替换最长的公共字符串:

s/([ACGT]*)_\1/$1/
Run Code Online (Sandbox Code Playgroud)