免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2291 | 回复: 9
打印 上一主题 下一主题

怎样找到~~前后匹配的~~~~? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-09-09 17:05 |只看该作者 |倒序浏览
$a="AAAACCCCTTTAGCCCGGgG";

while ($a=~/CCC/g) {
       
        print "$& and $+[0]\n";
}

这个程序运行后:
CCC and 7
CCC and 16

其实大家可以看到~~~在8的位置上也有一个CCC,但是因为7的位置已经匹配过,就造成这部分~~~无法匹配
请问各位大侠怎样来解决问题~~~

使运行出来的结果为:
CCC and 7
CCC and 8
CCC and 16

论坛徽章:
0
2 [报告]
发表于 2008-09-09 18:46 |只看该作者
求助呀~~~~~~~~

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
3 [报告]
发表于 2008-09-10 09:22 |只看该作者
原帖由 wubingran 于 2008-9-9 17:05 发表
$a="AAAACCCCTTTAGCCCGGgG";

while ($a=~/CCC/g) {
       
        print "$& and $+[0]\n";
}

这个程序运行后:
CCC and 7
CCC and 16

其实大家可以看到~~~在8的位置上也有一个CCC,但是因为7的位置已经匹 ...


while ( $a =~ /C(?=CC)/g ) {
        print "$&CC and " . ($+[0]+2) . "\n";
}

论坛徽章:
0
4 [报告]
发表于 2008-09-10 10:40 |只看该作者
这个昨天似乎在QQ群上告诉你了,如果要用正则的话可以用 前瞻
我觉得还是不用正则比较好。

论坛徽章:
0
5 [报告]
发表于 2008-09-10 12:14 |只看该作者
原帖由 redspider 于 2008-9-10 10:40 发表
这个昨天似乎在QQ群上告诉你了,如果要用正则的话可以用 前瞻
我觉得还是不用正则比较好。


那个方法的确可以~~~~不过~~~这样
一是不太好找位点(我要找的是转录起始位点上游,这个已经编好),如果改用substr,得重新编~~~~
二是这样不断的赋值,不断的小字段的搜索~需要很多时间~~~~我要找的是很多序列文件组成的很大~~~不太现实~~~·

论坛徽章:
0
6 [报告]
发表于 2008-09-10 12:17 |只看该作者
原帖由 ly5066113 于 2008-9-10 09:22 发表


while ( $a =~ /C(?=CC)/g ) {
        print "$&CC and " . ($+[0]+2) . "\n";
}



首先表示感谢~~~~~

能解释一下:
$a =~ /C(?=CC)/g

以及$&CC    什么意思不?

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
7 [报告]
发表于 2008-09-10 12:31 |只看该作者
原帖由 wubingran 于 2008-9-10 12:17 发表



首先表示感谢~~~~~

能解释一下:
$a =~ /C(?=CC)/g

以及$&CC    什么意思不?


?= 向前断言,匹配。

大骆驼第五章 模式匹配好象没有做详细的讲解。
还是看 perldoc perlre 吧。虽然是英文的,但我感觉看起来还不是很累(俺英文很差的)。

论坛徽章:
0
8 [报告]
发表于 2008-09-10 13:14 |只看该作者
xiexie~~~~~~

论坛徽章:
0
9 [报告]
发表于 2008-09-10 13:23 |只看该作者
这种东西用 向前断言

论坛徽章:
0
10 [报告]
发表于 2008-09-10 19:08 |只看该作者
原帖由 wubingran 于 2008-9-10 12:14 发表


那个方法的确可以~~~~不过~~~这样
一是不太好找位点(我要找的是转录起始位点上游,这个已经编好),如果改用substr,得重新编~~~~
二是这样不断的赋值,不断的小字段的搜索~需要很多时间~~ ...

我没有说用 substr 了,那样效率很低的。
我是说, 如果用正则的话可以用 前瞻,就是楼上所说的 前向断言。
如果是我就不用正则,直接一个个比较就 OK 了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP