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
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 |