Соединение двух строк для объединения их общего суффикса и префикса - PullRequest
2 голосов
/ 21 марта 2012

У меня есть два слова:

AGCGCGATAGC
       ^^^^
TAGCTATATATA
^^^^

Второе слово имеет TAGC, общее с первым словом.Поэтому я хотел бы получить результат:

AGCGCGATAGCTATATATA
       ^^^^

Есть ли какая-нибудь функция Perl, которая объединяет эти слова?Использование конкатенации может привести к повторению:

AGCGCGATAGCTAGCTATATATA
       ^^^^^^^^

Ответы [ 2 ]

5 голосов
/ 21 марта 2012

Простой способ сделать это - соединить строки вместе с символом, отсутствующим в вашем алфавите:

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

Затем сопоставьте и замените максимально длинную общую строку на каждой стороне разделителя:

s/([ACGT]*)_\1/$1/
2 голосов
/ 21 марта 2012

Вы можете использовать конструкцию так:

my $txt = 'AGCGCGATAGCD';
my $txt2 = 'TAGCTATATATA';
print "$txt\0$txt2" =~ /(.*)(.+)\x{0}\2(.+)/ ? "$1$2$3" : "$txt$txt2";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...