Re: Pattern Matching

From: Michael Renner <renner(at)inqnet(dot)at>
To: Florian Aumeier <faumeier(at)mediaventures(dot)de>
Cc: "pgsql-de-allgemein(at)postgresql(dot)org" <pgsql-de-allgemein(at)postgresql(dot)org>
Subject: Re: Pattern Matching
Date: 2008-07-07 09:19:04
Message-ID: 4871DF88.40101@inqnet.at
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-de-allgemein

Florian Aumeier schrieb:
> Guten Morgen allerseits
>
> wie kann ich bei Postgres in einem Pattern eine Zeichenfolge ausschließen?
>
> Als Beispiel zwei unterschiedliche URL. Die erste URL soll gematched
> werden, die zweite nicht:
>
> a) 'http://asbojesus.wordpress.com/2007/03/02/14/'
> b) 'http://feeds.wordpress.com/1.0/goreddit/globolibro.wordpress.com/319/'
>
> Meine Idee war es mit diesem Pattern zu machen
>
> E'^http://[a-zA-Z0-9]+[^(feeds)]\.wordpress\.com'
>
> was leider nicht funktioniert, da dass [^(feeds)] nicht nur die
> Zeichenfolge 'feeds' ausschließt, sondern die einzelnen Zeichen 'f e d s'.

Um das so umzusetzen brauchst du einen negative lookbefore [1]; ich bin
mir nicht sicher ob das in den PG PCRE implementiert ist.

Zum allgemeinen regex-basteln eignen sich Regex Coach [2] oder ähnliche
Tools ziemlich gut (interaktives Testen).

Und als Lösungsansatz würd ich unter der Annahme, dass die URLs einzeln
in einer Column stehen, ein "not ilike 'http://feeds.wordpress.com/%'"
empfehlen, das sollt auch relativ flott sein.

lg,
michael

[1] http://www.regular-expressions.info/lookaround.html
[2] http://www.weitz.de/regex-coach/

--

Michael Renner
InQnet GmbH
Praterstraße 31
A-1020 Wien

Tel.: +43 1 212 7650 521
Fax.: +43 1 212 7650 610

In response to

Browse pgsql-de-allgemein by date

  From Date Subject
Next Message Thomas Markus 2008-07-07 10:13:52 Re: Pattern Matching
Previous Message Florian Aumeier 2008-07-07 07:31:35 Pattern Matching