Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask
 
PerlMonks  

Re: Perl Pattern Matching & RegEx's

by choroba (Abbot)
on Mar 07, 2013 at 14:29 UTC ( #1022243=note: print w/ replies, xml ) Need Help??


in reply to Perl Pattern Matching & RegEx's

The main problem is matches in /g cannot overlap. This can be solved by using look-ahead, though:

#!/usr/bin/perl use warnings; use strict; use feature qw(say); my $string = 'AAAbcdAAAdcbAAAbbdAAAxAAAA'; my $delimiter = 'AAA'; my @positions; push @positions, pos($string) while $string =~ /(?=$delimiter)/g; for my $from (@positions) { for my $to (grep $_ - length $delimiter > $from, @positions) { say substr($string, $from, $to - $from) . $delimiter; } }

Update: Typo fixed. Thanks jaiieq, damn netbooks.

لսႽ ᥲᥒ⚪⟊Ⴙᘓᖇ Ꮅᘓᖇ⎱ Ⴙᥲ𝇋ƙᘓᖇ


Comment on Re: Perl Pattern Matching & RegEx's
Download Code
Re^2: Perl Pattern Matching & RegEx's
by jaiieq (Novice) on Mar 07, 2013 at 14:45 UTC
    This is exactly what I needed. Which also gives me the ability to easily change the delimiter to say 'AA' and produce the output I need. Thank you.

    There is a small typo in your code as you have a quote after $delimiter in the say line

Re^2: Perl Pattern Matching & RegEx's
by Dallaylaen (Scribe) on Mar 07, 2013 at 15:34 UTC
    Wow, substr is so much better here than split/join!

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1022243]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others wandering the Monastery: (15)
As of 2014-07-10 14:19 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    When choosing user names for websites, I prefer to use:








    Results (212 votes), past polls