hi amit --
In a message dated 3/2/2007 4:54:57 P.M. Eastern Standard Time,
[EMAIL PROTECTED] writes:
> hello,
> Thanks for your previous reponses.
> Now this time i am using the right syntax for matching, for the string
like:
>
>
> $temp= "XXXXAAAZZZZBBBSSSSCCCGGGGBBBVVVVVBBB"
>
> I need to write a regex for filterin out the string between.
>
> AAA
> BBB
> CCC
>
> so in the above case i should have the output as:
>
>
> AAAZZZZZBBB
> BBBSSSSSSCCC
> CCCGGGGBBB
> BBBVVVVVBBB
> meaning all combinations of start and end for AAA BBB CCC.
>
> I have the regex for one of them but how do i do it simultaneously for
> all 3 of them.
>
>
> $temp='XXXXAAAZZZZBBBSSSSCCCGGGGBBBVVVVVBBB';
>
> @t = ($temp =~/(AAA)(.*?)(BBB)/g);
> foreach (@t)
> {
>
> print $_;
>
> }
>
> Am not able to figure out how will go about when just after the match
> i need to match for
> BBBSSSSCCC.
>
> Any suggestions
>
>
> Thanks
try this:
C:[EMAIL PROTECTED]>perl -we "use strict; my $dna=
'XXXXAAAZZZZBBBSSSSCCCGGGGBBBVVVVVBBBAAA';
my $starter = qr(AAA | BBB | CCC)x; my $stopper = qr(AAA | BBB | CCC)x; my
@seq;
while ($dna =~ / ($starter) (.*?) ($stopper) /gx) { push @seq, qq($1$2$3);
pos($dna) = $-[3]; };
print qq({$_} \n) for @seq"
{AAAZZZZBBB}
{BBBSSSSCCC}
{CCCGGGGBBB}
{BBBVVVVVBBB}
{BBBAAA}
the trick is resetting the search position in the body of the while loop.
as far as i know, there is
no way to do this purely from within a regex.
i defined two separate patterns for starting and stopping a subsequence even
though the actual
groups are identical; it may serve if the groups ever differ.
note that the above also captures the ``empty'' test case i added at the
end. if you do not want this,
try this instead (the (.*?) becomes (.+?)):
C:[EMAIL PROTECTED]>perl -we "use strict; my $dna=
'XXXXAAAZZZZBBBSSSSCCCGGGGBBBVVVVVBBBAAA';
my $starter = qr(AAA | BBB | CCC)x; my $stopper = qr(AAA | BBB | CCC)x; my
@seq;
while ($dna =~ / ($starter) (.+?) ($stopper) /gx) { push @seq, qq($1$2$3);
pos($dna) = $-[3]; };
print qq({$_} \n) for @seq"
{AAAZZZZBBB}
{BBBSSSSCCC}
{CCCGGGGBBB}
{BBBVVVVVBBB}
hth -- bill walters
<BR><BR><BR>**************************************<BR> AOL now offers free
email to everyone. Find out more about what's free from AOL at
http://www.aol.com.
_______________________________________________
ActivePerl mailing list
[email protected]
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs