Syntax eines reg. Ausdrucks....

Crai

Mitglied
Hallo Leute,

ich habe eine Verständisfrage:
Was ist an folgendem regulären Ausdruck syntaktisch nicht korrekt?
Code:
protected static final Pattern ALLOWED_PATTERN = Pattern.compile("((\\d+[a-z]*[-|_]*) | (\\d*[a-z]+[-|_]*) | (\\d*[a-z]*[-|_]+))+");

Es geht mir hier nicht wirklich um die Richtigkeit des Ausdrucks, eher um dessen richtige Formulierung.
Ich hab das Minus(-) und den Underscore(_) auch schon mit "\\" vornedrann angegeben, aber das hilft auch nichts...

Gruß,
Crai
 
Ich hab von JAVA keine Ahnung, aber RegExp bleibt ja RegExp...

ich würd mal sagen, das + am Ende ist falsch, das steht für das 1-xfache wiederholen eines Zeichens, vor dem Plus steht aber kein Zeichen.
 
Hi,

@Sven: Mit dem + am Ende wollte ich nur sicherstellen, dass irgendeine Zeichenkombination mindestens einmal vorkommt.

@Tom:
Ok, der Sinn dieses Ausdrucks besteht darin, damit gültige Datei- und Verzeichnisnamen zu erkennen.
Gültige Namen enthalten:

- ausnahmslos Kleinbuchstaben
- Ziffern von 0-9
- Unterstriche
- Trennstriche
- KEINE Leerzeichen oder irgendwelche anderen Sonderzeichen
- müssen mindestens aus einem Zeichen bestehen
- beliebige Kombinationen der erlaubten Zeichen sind möglich

Gruß,
Crai
 
Hallo!

Wie waers denn damit:
Code:
    String regex = "[a-z0-9_-]+";
        String path = "program-files";
        System.out.println(path.matches(regex));

Gruss Tom
 
Vielen Dank Tom!
Es funktioniert!
Und noch dazu ist der Ausdruck um einiges eleganter! :)

Ich hab das ganze noch um die Erkennung eines Punktes erweitert, für die, die es intressiert:

Code:
protected static final String regex = "[a-z0-9_-p{.}]+";

Grüße,
Craimore
 
Hi Tom,

hab ich anfangs so auch versucht, hat aber beim Debuggen immer etwas von
invalid character gebracht, deswegen hab ich dann die jetzige Lösung gewählt.

Gruß,
Crai
 

Neue Beiträge

Zurück