高山流水分享 http://blog.sciencenet.cn/u/friendpine 走在科学路上的一位无名侠客,只是静静的走着.........

博文

perl中的pos()函数处理重复匹配的问题

已有 10826 次阅读 2013-6-14 16:02 |个人分类:生物信息学与计算生物学|系统分类:科研笔记

该函数可以返回匹配的位置,并且改变匹配的位置,这样就可以用来寻找重复字符串的多次匹配,比如寻找字符串中糖基化位点的程序:

序列:$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;

}

这样能够得到所有匹配该模式的位置,然后根据位置之间的距离去掉前面的位置,比如这里去掉第一个位置,就得到了我们想要的结果



https://blog.sciencenet.cn/blog-54276-699424.html

上一篇:HMM模型的初步学习
下一篇:R中做图怎样画出次坐标轴?
收藏 IP: 222.247.53.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-25 10:28

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部