По сути, у меня есть несколько файлов, каждый из которых содержит несколько строк текста, и я заинтересован в том, чтобы найти конкретную последовательность из 7 букв и подсчитать, сколько раз они появляются на файл, используя некоторые основные регулярные выражения на Perl (v5. 24,1).
Пока проблем нет, но «хитрая» часть заключается в том, что если одна из этих семи букв не соответствует моему шаблону, я бы тоже хотел посчитать ее (при условии, что она всего одна).
Шаблоны, которые я ищу:
'CCCAGGT', 'CCCAGTT', 'CCCAGCT', and 'CCCAGAT'.
Примеры несоответствующих текстов, которые я хотел бы посчитать:
line1 - AGGCTCAGGAG'CCCATGT'GGGCGGACCCAT --> Count as 'CCCAGGT'
line2 - CGGCTCAGGAG'CCCGGGT'GGGCGGTCCCAT --> Count as 'CCCAGGT'
Я включил фрагмент кода (внизу), чтобы более подробно объяснить, что я ищу и что я думал до сих пор, но это должен быть лучший способ сделать это.
Итак, знаете ли вы, можно ли "сказать" Perl, что я могу допустить 1 несоответствие в последовательности при использовании оператора =~ m/
? ИЛИ другую функцию для использования?
Большое спасибо за вашу помощь!
if ($elements[0] =~ m/CCCAGGT/){
$mutg = $mutg + $elements[1];
}
elsif ($elements[0] =~ m/CCCAGTT/){
$mutt = $mutt + $elements[1];
}
elsif ($elements[0] =~ m/CCCAGAT/){
$muta = $muta + $elements[1];
}
elsif ($elements[0] =~ m/CCCAGCT/){
$mutc = $mutc + $elements[1];
}
else {
if ($elements[0] =~ m/.CCAGGT/){
$mutg = $mutg + $elements[1];
}
elsif ($elements[0] =~ m/.CCAGTT/){
$mutt = $mutt + $elements[1];
}
elsif ($elements[0] =~ m/.CCAGAT/){
$muta = $muta + $elements[1];
}
elsif ($elements[0] =~ m/.CCAGCT/){
$mutc = $mutc + $elements[1];
}
else {
[[AGAIN BUT WITH THE "." IN THE SECOND POSITION AND SO ON]]
}
}