expertenaustausch > microsoft.* > microsoft.german.entwickler.dotnet.csharp

Frank Arthur (28.03.2006, 22:43)
Ich habe gesucht aber keinen vernünftigen regulären Ausdruck gefunden,
der folgendes leistet:
Der reguläre Ausdruck soll auf alles zutreffen, nur nicht auf eine
bestimmte Datei.

Ich habe folgende Strings zu testen:

/images/0.jpg
/images/1.png
....
/images/1234567.gif

Der reguläre Ausdruck soll auf alles treffen innerhalb von images nur
nicht auf 0.jpg

Mir ist nur das eingefallen:
^/images/([\d]{2,}|[^0])\.

Das scheint mir aber etwas zu aufwändig für eine so einfache Aufgabe.
Frank Dzaebel (29.03.2006, 08:44)
Hallo Frank,

> Mir ist nur das eingefallen:
> ^/images/([\d]{2,}|[^0])\.
> Das scheint mir aber etwas zu aufwändig für eine so einfache Aufgabe.


So schlimm sieht das IMHO nicht aus für die Aufgabe.
Vielleicht etwas einfacher/performanter:
^/images/[1-9]\d*\.
Bedenke, es könnte in einem Pfad ggf. auch ein "\" sein.
Also eigentlich sauberer
Path.DirectorySeparatorChar, oder
Path.AltDirectorySeparatorChar.
Deswegen macht man manchmal solche Dinge auch mit
den Path-Methoden GetFileName, GetFileNameWithoutExtension etc.
Denke auch an die RegexOptions.Compiled, die die
Sache hier noch etwas performanter machen, da die
Regex ja immer gleich bleibt.

ciao Frank
Frank Arthur (29.03.2006, 19:52)
Hi Frank

> > Mir ist nur das eingefallen:
> > ^/images/([\d]{2,}|[^0])\.
> > Das scheint mir aber etwas zu aufwändig für eine so einfache Aufgabe.

> So schlimm sieht das IMHO nicht aus für die Aufgabe.
> Vielleicht etwas einfacher/performanter:
> ^/images/[1-9]\d*\.


Hey, du hast weiter gedacht als ich. Dein Ausdruck ist besser. Ich
hatte nicht bedacht, dass "0.jpg" das einzige Bild ist, dass mit '0'
beginnt.
Ich habe aber auch einen anderes Problem, bei dem die Datei
"config.inc.php" in "/phpmyadmin/config.inc.php" ignoriert werden
muss.

> Bedenke, es könnte in einem Pfad ggf. auch ein "\" sein.
> [...]


Bevor der Ausdruck angewendet wird, werden die DirectorySeparatorChar
durch '/' ersetzt. Ein '\' kann also nicht auftreten.
Ähnliche Themen