Reguläre Ausdrücke - X{0}?.*

Status
Nicht offen für weitere Antworten.

Clip

Bekanntes Mitglied
Hallo,

ich suche einen regulären Ausdruck, der ausdrückt, dass ein String NICHT vorkommen darf.
Im Konkreten Fall möchte druchsuche ich Verzeichnisse nach bestimmten Dateien. Ich möchte Dateien oder Verzeichnisse die mit einem 'bis' beginnen nicht finden.
Dazu habe ich folgenden Ausdruck probiert.
^bis{0}?.*

Dazu steht in der JavaDoc zu Pattern;
Reluctant quantifiers
X?? X, once or not at all
X*? X, zero or more times
X+? X, one or more times
X{n}? X, exactly n times
X{n,}? X, at least n times
X{n,m}? X, at least n but not more than m times

Durch Angabe einer '0', hatte ich mir gewünscht dies auszudrücken.
Leider wird der Wert 0 aber anscheinend behandelt wie eine 1. So werden immer nur genau die Einträge gefunden, die mit 'bis' beginnen. Also genau das Gegenteil von dem was ich eigentlich tun möchte.
Da ich zum suchen eine "Finder API" benutze, und in dieser nicht zu speziell sein will, kann ich nicht einfach das den Rückgabewert des Matchers negieren. Ich möchte das Problem mit einem regulären Ausdruck lösen.

Kann mir jemand helfen? Gesucht ist ein Ausdruck der Einträge die mit einem 'bis' (CASE_INSENSITIVE) beginnen NICHT findet.

Danke
 

mikachu

Top Contributor
Warum baust du dir nicht einfach einen FileNameFilter und übergibst dem der File.listFiles()-Methode?

Das wäre einfacher als jetzt einen RegExp aufzusetzen...

Java:
      File f = new File( "." );
      File[] files = f.listFiles( new FilenameFilter()
      {
         @Override
         public boolean accept( File dir, String name )
         {
            return !name.startsWith( "bis" );
         }
      });

      for( File file : files )
      {
         try
         {
            System.out.println( file.getCanonicalPath() );
         }
         catch( IOException e )
         {
            // TODO Auto-generated catch block
            e.printStackTrace();
         }
      }
 
Zuletzt bearbeitet:

Clip

Bekanntes Mitglied
mikatchu hat gesagt.:
Warum baust du dir nicht einfach einen FileNameFilter und übergibst dem der File.listFiles()-Methode?

Klar gibt es viele gute Wege das zu verwirklichen. Der Filefilter ist sicher eine sehr gute.
Aber, ich möchte es es aus API Gründen mit einem regulärem Ausdruck hinbekommen.
Es muss doch einen Ausdrück geben der meine Anforderungen erfüllt!
 

MacMallow

Mitglied
[c]^[^(bis)].*[/c] scheint zu gehen.

War auch meine erste Idee. Bei mir nimmt er dann aber kein Wort, dass mit b anfängt. Das ^ scheint nur bei einem Zeichen zu funktionieren. Warum es aber auch nicht geht wenn man Zeichen wie du hier mit Klammern gruppiert ist mir ein Rätsel.

EDIT:
Da mir nichts besseres einfällt und du RegEx benutzen willst wär das mein Vorschlag:
Java:
static Boolean check(String s) {
		if(s.matches("^bis.*"))
			return false;
		else
			return true;
	}
 
Zuletzt bearbeitet:

Michael...

Top Contributor
reguläre Ausdrücke sind m.W. dafür gedacht zu überprüfen, ob eine Zeichenkette einem bestimmten Schema entspricht und nicht, um festzustellen, ob diese einem Schema nicht entspricht.
 

Clip

Bekanntes Mitglied
Folgender Ausdruck scheint zu gehen:
Code:
^([^b]|^.[^i]|^..[^s]).*

Das ist aber natürlich viel besser :)
Code:
(?!bis).+
 
Zuletzt bearbeitet:
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Namen von Methoden über Reguläre Ausdrücke bearbeiten Allgemeine Java-Themen 6
E Reguläre Ausdrücke: String-Ersetzung Allgemeine Java-Themen 0
G Reguläre Ausdrücke Allgemeine Java-Themen 11
G Reguläre Ausdrücke Allgemeine Java-Themen 2
S Reguläre Ausdrücke: Polynomterme Allgemeine Java-Themen 14
jstei001 Reguläre Ausdrücke bearbeiten/ändern Allgemeine Java-Themen 14
C reguläre Ausdrücke finden nicht was sie finden sollen Allgemeine Java-Themen 8
F Reguläre Ausdrücke und BBCode Allgemeine Java-Themen 10
J String für reguläre Ausdrücke escapen Allgemeine Java-Themen 2
C Reguläre Ausdrücke, String rückwärts durchsuchen Allgemeine Java-Themen 6
I Reguläre Ausdrücke und das "~" Symbol Allgemeine Java-Themen 2
B Reguläre ausdrücke mit variablen? Allgemeine Java-Themen 12
H Regex - Reguläre Ausdrücke Allgemeine Java-Themen 3
A Reguläre Ausdrücke vereinfachen Allgemeine Java-Themen 19
J Reguläre Ausdrücke Allgemeine Java-Themen 14
A Zufallswerte für reguläre Ausdrücke Allgemeine Java-Themen 15
G Reguläre Ausdrücke Allgemeine Java-Themen 8
R reguläre Ausdrücke Allgemeine Java-Themen 2
L Reguläre Ausdrücke und Fehlerbehandlung Allgemeine Java-Themen 10
RaoulDuke Reguläre Ausdrücke - Daten extrahieren Allgemeine Java-Themen 3
L reguläre Ausdrücke? Allgemeine Java-Themen 2
R Reguläre Ausdrücke (mehrzeilig) Allgemeine Java-Themen 2
C Reguläre Ausrücke Punkte im Satz richtig erkennen Allgemeine Java-Themen 6
E Reguläre Txt in Tree parsen Allgemeine Java-Themen 2
J Reguläre Ausrücke - Klammer nicht vorhanden Allgemeine Java-Themen 2
B kontextfreie grammatik / reguläre grammatik Allgemeine Java-Themen 2
P reguläre ausrücke und String.matches Allgemeine Java-Themen 4
S Reguläre Ausdruecke! Allgemeine Java-Themen 5
A Lambda-Ausdrücke Allgemeine Java-Themen 5
M Lambada Ausdrücke - wie funktionieren und benutzt man sie? Allgemeine Java-Themen 5
S Lambda Ausdrücke: @FunctionalInterface Instanzen auf null prüfen Allgemeine Java-Themen 9
Z Design um boolsche ausdrücke zu speichern & auszuwerten Allgemeine Java-Themen 3
R Logische Ausdrücke in Java Allgemeine Java-Themen 4
Loyd Noch ne Regex-Frage: Verschachtelte Ausdrücke Allgemeine Java-Themen 4
H Geklammerte Ausdrücke nach Divide&Conquer Allgemeine Java-Themen 2
B Parser für logische Ausdrücke Allgemeine Java-Themen 9
J Expression Language für mathematische Ausdrücke Allgemeine Java-Themen 8
B Regeuläre Ausdrücke Allgemeine Java-Themen 8
G arithmetische ausdrücke Allgemeine Java-Themen 5
M Regular Expression - verschiedene Ausdrücke testen (grep | ) Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben