Search Postgresql Archives

Re: Why this regexp matches?!

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat, Feb 04, 2012 at 09:54:34AM +0100, Szymon Guz wrote:
> On 4 February 2012 09:46, hubert depesz lubaczewski <depesz@xxxxxxxxxx>wrote:
> 
> > select 'depesz depeszx depesz' ~ E'^(.*)( \\1)+$';
> >
> > what's worse:
> > $ select regexp_replace( 'depesz depeszx depesz', E'^(.*)( \\1)+$', E'\\1'
> > );
> >  regexp_replace
> > ────────────────
> >  depesz
> > (1 row)
> >
> > I know that Pg regexps are limited, but even grep's regexps match this
> > correctly:
> >
> > =$ printf 'depesz depesz depesz\ndepesz depeszx depesz\n' | grep -E
> > '^(.*)( \1)+$';
> > depesz depesz depesz
> >
> > Best regards,
> >
> > depesz
> >
> >
> Hi,
> some time ago I hit the same problem, however the solution was a little bit
> tricky. I didn't have time to investigate it, but this works:
> 
> postgres@postgres:5840=#  select regexp_replace( 'depesz depeszx depesz',
> E'^(.*)( \\\\1)+$', E'\\\\1' );
>     regexp_replace
> -----------------------
>  depesz depeszx depesz
> (1 row)

not sure if I understand your point.

This regexp was meant to find repeated substrings.

Like this one does in perl:

/^(.*)( \1)+$/

We can see how it works with:
=$ perl -e 'if ( shift =~ m/^(.*)( \1)+$/ ) { print "is repeat of [$1]\n" } else {print "is not repeated\n"}' 'depesz depesz depesz'
is repeat of [depesz]

=$ perl -e 'if ( shift =~ m/^(.*)( \1)+$/ ) { print "is repeat of [$1]\n" } else {print "is not repeated\n"}' 'depesz depeszx depesz'
is not repeated

reason why your regexp matches is also a mystery for me.

Best regards,

depesz

-- 
The best thing about modern society is how easy it is to avoid contact with it.
                                                             http://depesz.com/

-- 
Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux