Итак, я расщепляю белковую последовательность с помощью фермента (для вашего любопытства, Asp-N), который расщепляет перед белками, кодируемыми B или D, в однобуквенной последовательности. Мой фактический анализ использует String#scan
для захватов. Я пытаюсь понять, почему следующее регулярное выражение не переваривает его правильно...
(\w*?)(?=[BD])|(.*\b)
где антецедент (.*\b)
существует для захвата конца последовательности. За:
MTMDKPSQYDKIEAELQDICNDVLELLDSKGDYFRYLSEVASGDN
Это должно дать что-то вроде: [MTM, DKPSQY, DKIEAELQ, DICN, DVLELL, DSKG, ... ]
, но вместо этого пропускает каждую D в последовательности.
Я использовал http://www.rubular.com для устранения неполадок, который работает на 1.8.7, хотя я также тестировал этот REGEX на 1.9.2 безрезультатно. Насколько я понимаю, утверждения с опережением нулевой ширины поддерживаются в обеих версиях ruby. Что я делаю неправильно с моим регулярным выражением?