||
该函数可以返回匹配的位置,并且改变匹配的位置,这样就可以用来寻找重复字符串的多次匹配,比如寻找字符串中糖基化位点的程序:
序列:$string="NNST"
如果只用/N[^P][ST]/g匹配的话,只会对第一个NNS进行匹配,然而这种情况我们想要的是NST进行匹配。perl中默认的匹配完之后会从匹配结束位置重新开始匹配,没法达到我们的要求。一种解决办法是单独处理这种出现两个N的情况,但是这样很麻烦。另外一个解决办法是改变重新开始匹配的位置,这可以通过pos()函数来实现,如下所示:
while($string=~/N[^P][ST]/g){
my $pos=pos($string);
push(@pos,$pos-2);
pos($string)=$pos-2;
}
这样能够得到所有匹配该模式的位置,然后根据位置之间的距离去掉前面的位置,比如这里去掉第一个位置,就得到了我们想要的结果
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-12-22 21:10
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社