Re: how to run regex calculation

MIchael Capone <[email protected]>
Newsgroups gmane.comp.apache.mod-perl
Message-ID <[email protected]>
It probably won't ever work.  The problem is the * (star/asterisk) after 
\1 is being interpreted in the context of regular expressions, ie, 
"zero-or-more matches", and not as a multiplication operator.  In fact,

~]$ perl -Mstrict -le 'my $str = "2 3 23"; print "true" if 
$str=~/(\d+)\s(\d+)\s(\1*\2)/'

...does indeed print "true"

It would probably make the most sense to not try to do this as a 
one-liner (why do we perl programmers love to be cute like that?), and 
simply break it up into two steps:

$str =~ s/(\d+)\s(\d+)\s(\d+)/;
print "true" if ($1*$2 == $3);

- Michael



On 1/9/2020 12:39 AM, Wesley Peng wrote:
> Hallo
>
> on 2020/1/9 16:35, demerphq wrote:
>> $str=~/(\d+)\s(\d+)\s(\1*\2)/
>>
>> $1 refers to the capture buffers from the last completed match, \1
>> inside of the pattern part of a regex refers to the capture buffer of
>> the currently matching regex.
>
> This doesn't work too.
>
> perl -Mstrict -le 'my $str = "2 3 6"; print "true" if 
> $str=~/(\d+)\s(\d+)\s(\1*\2)/'
>
> nothing printed.
>
>
> Regards.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.