- 论坛徽章:
- 0
|
回复 7# lhohoz
谢谢。代码很精炼,试了下,还差一点就好了。- my $str = "ABCD----GXXXXXGGXGGGGGGXGGGGXGGGGGGXGXXXG----ABCDBABDABDC";
- if ($str =~ /((?:G+[A-FH-Z]+)*G+)/) {
- print '*1*', $1, "\n";
- }
- if ($str =~ /((?:G{5,}[A-FH-Z]{0,2})*G+)/) {
- print '*2*', $1, "\n";
- }
- if ( $str =~ /((G.).*\2)/ ) {
- print '*3*', $1, "\n";
- }
- if ($str=~/(G+[^G]?){1,}/) {
- print '*4*', $1, "\n";
- }
- if ($str=~/([XA]*G+)/) {
- print '*5*', $1, "\n";
- }
复制代码 我一一试了上面几位的代码。最后结果是这样的。你的是第3种。
*1*GXXXXXGGXGGGGGGXGGGGXGGGGGGXGXXXG
*2*G
*3*GXXXXXGGXGGGGGGXGGGGXGGGGGGXGX
*4*GX
*5*G
你知道怎么能把前面的 GXXXXX这一段去掉吗? 因为这个G跟后面的GG中间隔了5个X,多于2个。不能加进来。 |
|