Re: kleines RegEx Problem
On 24.05.06 03:06:41, Andreas Pakulat wrote:
> Hi,
>
> hab hier ein klitzekleines RegEx-Problem.
>
> Gegeben sein ein String der Dateinamen enthaelt wie sie in Debian
> Archiven vorkommen koennen (also z.B. foobar_version_arch.deb,
> foobar_version.orig.tar.gz, foobar_version.tar.gz).
>
> Ich moechte nun mit einer Regex darauf matchen, folgende regex macht
> fast was sie soll:
>
> '^([^_]+)_([^_]+)(_.+)*(\.orig\.tar\.gz|\.tar\.gz|\.diff\.gz|\.dsc|\.deb|\.udeb|\.package|\.source)$'
>
> Das Problem dabei: Bei foobar_version.orig.tar.gz erhalte ich fuer
>
> \1 = foobar
> \2 = version.orig
> \3 = tar.gz
Ich mach die Antwort mal so, da mehrere Leute mich auf den richtigen
Pfad gebracht haben: non-greedy heisst das Stichwort.
Auch Python's re-Modul kann non-greedy Matchen, allerdings habe ich den
Absatz beim ersten Lesen wohl "ueberlesen".
Der regulaere Ausdruck ist nun:
'^([^_]+)_([^_]+?)(\.|_.*\.)(orig\.tar\.gz|tar\.gz|diff\.gz|dsc|deb|udeb|package|source)$'
Andreas
--
You will be surprised by a loud noise.
Reply to: