On Fri, 27 Sep 2002, nkuipers wrote:
> Hello,
>
> I am trying to get the positions of every instance of a given substring within
> a given superstring (DNA sequence), and currently have a
>
> while ( $super_string =~ m/${sub_string}/gi ) { ... }
>
> construct.
>
> I was under the impression that the regex transmission would bump along every
> character and try to match, backtracking even after success to try the
> character after the first character from the successful match. However, The
> Camel 3rd says that "used in a scalar context, the /g modifier...makes Perl
> start the next match on the same variable at a position just past where the
> last one stopped"(p151). This is obviously inadequate in cases where one
> match may commence within another.
>
> Suggestions?
>From the perl cookbook, page: 162
#!/usr/bin/perl -w
use strict;
my $digits = '123456789';
my @yeslap = $digits =~ /(?=(\d\d\d))/g;
print "@yeslap\n";
'?=' is a zero-width positive look-ahead assertion. In this case it
matches three successive \d without the regex engine moving ahead.
When it sees the /g it bumps ahead one position. Is this what you need?
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]