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

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: