in reply to Simple regex question
"\1" means the first opened parenthesis. You need to use "\2".
$ perl -e '$_="aaabbccccddeee"; print $1,$/ while /((.)\2*)/g' # ^^ # || # |+--- \2 # | # \1 aaa bb cccc dd eee
Or, if you want an array as a result,
push @array, $1 while /((.)\2*)/g;
Update
Notice that you can't just assign the outcome of the regex to an array, because you'd get redundant results (both $1 and $2 for each match).
# THIS IS WRONG @array = $_ =~ /((.)\2*)/g; print join ", " , map {"<$_>"} @array; __END__ <aaa>, <a>, <bb>, <b>, <cccc>, <c>, <dd>, <d>, <eee>, <e>
_ _ _ _ (_|| | |(_|>< _|
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Re: Simple regex question
by QM (Parson) on Oct 23, 2003 at 15:22 UTC | |
|
Re: Re: Simple regex question
by Anonymous Monk on Oct 23, 2003 at 13:30 UTC |