正则表达式 – 酶促切割是否存在正则表达式?

前端之家收集整理的这篇文章主要介绍了正则表达式 – 酶促切割是否存在正则表达式?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
protein序列的(理论上) tryptic切割是否存在正则表达式?胰蛋白酶的切割规则是:在R或K之后,但在P之前不是.

例:

切割序列VGTKCCTKPESERMPCTEDYLSLILNR应产生这3个序列(peptides):

VGTK
 CCTKPESER
 MPCTEDYLSLILNR

注意,在第二肽中K后没有切割(因为P在K之后).

在Perl中(它也可以用于C#,Python或Ruby):

my $seq = 'VGTRCCTKPESERMPCTEDYLSLILNR';
  my @peptides = split /someRegularExpression/,$seq;

我已经使用过这种解决方法(切割标记= =首先插入序列中,如果P紧接在切割制造者之后再次移除):

my $seq      = 'VGTRCCTKPESERMPCTEDYLSLILNR';
  $seq         =~ s/([RK])/$1=/g; #Main cut rule.
  $seq         =~ s/=P/P/g;       #The exception.
  my @peptides = split( /=/,$seq);

但这需要修改一个可能很长的字符串,并且可能有数百万个序列.有没有一种方法可以将正则表达式与split一起使用?如果是,那么正则表达式是什么?

测试平台:Windows XP 64位. ActivePerl 64位.从perl -v:v5.10.0为MSWin32-x64-multi-thread构建.

你确实需要使用积极的lookbehind和负的lookahead的组合.正确的(Perl)语法如下:
my @peptides = split(/(?!P)(?<=[RK])/,$seq);

猜你在找的正则表达式相关文章