Использование упреждающего поиска в сложном поиске в регулярном выражении R / Perl - PullRequest
0 голосов
/ 31 января 2019

Я не могу понять, как использовать упущения / спины в регулярном выражении, чтобы найти совпадения по отдельным поисковым битам (?) Слова / мотива, который я ищу.

В наборе цепочек ДНК мне нужно соответствовать TGGA + один C или T + 0-4 A / C / T / G +> = 5 C / T, но я не хочу, чтобы где-нибудь GTв матче.Я выяснил, как устранить это в 0-4 A / C / T / G (пример № 1), но я не могу понять, как справляться со случаями, когда G получается из [A, C,T, G] {0,4} и соседний T происходит от {5,}.

Я попытался добавить взгляд назад после расширения последней части до [C, T] (?>! GT) [C, T] {4,} и взгляда позади перед [A, C, T, G] {0,4} не подхватывает разделенный экземпляр GT.Будем благодарны за любые советы / помощь!

Текущее регулярное выражение:

TGGA[C,T](?!GT)[A,C,T,G]{0,4}[C,T]{5,}

Пример набора:
1) TGGACGTGGTCCCCC (плохо, рассматривается)
2) TGGACGCCCCC (хорошо)
3) TGGACGGGGTCCCCC ... (плохо, как мне это исправить?)

1 Ответ

0 голосов
/ 04 февраля 2019

Используйте отрицательный прогноз после соответствующих символов G, чтобы указать, что знак Т не должен следовать:

/TGGA[CT](?:[ACT]|G(?!T)){0,4}[CT]{5,}/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...