in reply to Re: (GOLF) - multiple digit finder regex - 17 chars
in thread regexp golf - homework
/.*?([0-9]).*?\1/ *what's most interesting about this, is that $1 does not work in place of \1.Well, of course! $1 and \1 mean different things. When $1 is used in a regex, its value is interpolated as the regex is compiled, just like any other variable. For example:
prints Yup! because $1 holds 'b' from the first match and the second regex is compiled as /(.).*c/.'b' =~ /(.)/; print "Yup!\n" if 'ab' =~ /(.)$1/;
\1, on the other hand, is special regex syntax, and matches the same thing that was matched by the first capturing group in the current regex.
does not print Yup!, because \1 wants to match an 'a'.'b' =~ /(.)/; print "Yup!\n" if 'ab' =~ /(.)\1/;
(\1 on the right hand side of a substitution, with the same meaning as $1, has been deprecated for quite some time.)
Update: Fixed the explanation; an earlier revision of the example used 'c' instead of 'b'.
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: Re: Re: (GOLF) - multiple digit finder regex - 17 chars
by particle (Vicar) on Feb 03, 2002 at 04:39 UTC |
In Section
Seekers of Perl Wisdom