Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:
Dear Monks,
I have a problem I am trying to solve with regular expressions. I want to return all locations of an array of patterns inside a string. I also only want the patterns to match at locations which are a multiple of 3. For example, so far I have the following.
my $string="AAABBBCCCCDDDEEEFFFGGGHHHIII"; my @patterns=('BBB','DDD'); my @index; foreach(@patterns){ while($string=~m/([A-Z]{3})+?$_/g){ push(@index,$-[2]); pos($string)=$-[2]; }
The problem with this is that it matches the first pattern correctly, but it will also match 'CCCDDD' in the second loop because I cannot/dont know how to anchor the pattern to start at a specific location.
To be clear, I only want the patterns in the array to match if there are a number of characters evenly divisible by three before it.
Is there a good way to do this?
Thanks
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: Perl Regex Repeating Patterns
by Corion (Patriarch) on Jan 17, 2012 at 21:21 UTC | |
by Anonymous Monk on Jan 17, 2012 at 21:43 UTC | |
by AnomalousMonk (Archbishop) on Jan 18, 2012 at 00:07 UTC | |
by Corion (Patriarch) on Jan 18, 2012 at 08:01 UTC | |
Re: Perl Regex Repeating Patterns
by JavaFan (Canon) on Jan 17, 2012 at 22:17 UTC | |
Re: Perl Regex Repeating Patterns
by Anonymous Monk on Jan 17, 2012 at 21:08 UTC |
Back to
Seekers of Perl Wisdom