Regulärer Ausdruck mit [ und ]

Status
Nicht offen für weitere Antworten.

micbur

Bekanntes Mitglied
Hallo,

ich habe momentan ein Problem mit einem regulären Ausdruck.
In dem Pattern gibt es [ und ] als Elemente. Ich möchte damit nichts gruppieren. Ich dachte, ich könnte es escapen mit einem Backslash, aber dann meckert der Compiler.

Wie kann ich jetzt vorgehen?

Und: Wann kann ich eigentlich die tollen Sachen wie \d, ^ und $ nutzen?

Ciao, micbur
 

Leroy42

Top Contributor
Hast du auch den Backslash escaped?

Also "\\\[" ?

Edit: Ähh, quatsch: Die Eckige Klammer braucht/kann ja im Stringkontext nicht escaped werden.

Ich würde also sagen: "\\["
 

micbur

Bekanntes Mitglied
Danke, danke. Geht super.

Hast du auch eine Idee, warum \d nicht funktioniert? Ich wollte etwa kein [0-9] benutzen.

Ciao, micbur
 

micbur

Bekanntes Mitglied
raiL hat gesagt.:
http://java.sun.com/j2se/1.5.0/docs/api/java/util/regex/Pattern.html

\d A digit: [0-9]
\D A non-digit: [^0-9]

leute die nich in die api guggn.....
Yo, verstehe ich. Habe ich auch gemacht. Sonst wüsste ich von \d und \D auch nichts.

Code:
Pattern pattern = Pattern.compile("^// ERROR \\[\d+,\d+,[a-zA-Z_-]+\\]$");
Fehlernachricht: Invalid escape sequence (valid ones are \b \t \n \f \r \" \' \\ )

Doppelposting kann ich nicht löschen. Habe alles nach 'löschen' oder 'delete' abgesucht. Sorry, irgendwie habe ich zwei Mal auf 'senden' vorhin geklickt.

Ciao, micbur
 

micbur

Bekanntes Mitglied
Achso, jetzt verstehe ich. Also wenn ich ein digit darstellen möchte, ist es kein String, sondern erst ein RegExpString. Also String muss ich also ein Backslash und D erzeugen => \\ und d.
Dann kommt das Ganze in den Pattern und wird als RegExp evaluiert.

Warum schreiben die das denn nicht?

Man ehy, RegExpString != String. Nur RegExpString dürfen in Pattern benutzt werden. Sind ja ganz verschiedene Abstraktionslevel.

Danke & Ciao, micbur
 

Leroy42

Top Contributor
Oder mal allgemeiner:

In einem regulären Ausdruck steht "d" einfach für den Buchstaben "d".
Um die spezielle Bedeutung von digit zu erhalten muß das d escaped werden, also "\d"

Da \ aber gleichzeitig auch das Escape-Zeichen von Strings ist -- zum Beispiel
steht "\t" für einen Tabulator, "\h" für einen Backspace, usw. -- muß dieser Backslash
für den Compiler ebenfalls escaped werden.

Also "\d" muß "\\d" geschrieben werden und
"\\" (im regulären Ausdruck die Sequenz für ein einfaches Backslash) muß "\\\\" geschrieben werden.

Falls dir das immer noch nicht klar ist, laß es dir von Java einfach mal auf die Konsole ausgeben.

Code:
System.out.println("Eine eckige Klammer: \\[, ein Digit \\d, ein Backslash \\\\");
 

micbur

Bekanntes Mitglied
Ja, ich habe es mal schnell so gemacht.
Code:
Pattern pattern = Pattern.compile("^// ERROR \\[\\d+,\\d+,\\w+\\]$");
System.out.println(pattern.pattern());

Dann wird's einem (mir) auch klarer.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
O regulärer Ausdruck zum durchsuchen eines Strings verwenden Allgemeine Java-Themen 2
N Regulärer Ausdruck funktioniert nicht Allgemeine Java-Themen 6
W Regulärer Ausdruck für 0 oder mehr Blanks Allgemeine Java-Themen 8
M Regulärer Ausdruck Allgemeine Java-Themen 3
R Regulärer Ausdruck Allgemeine Java-Themen 5
G Regulärer Ausdruck für 2 Wörter Allgemeine Java-Themen 3
P JFormattedTextField für durch Semikolon getrennte Integer-Werte gesucht / Regulärer Ausdruck Allgemeine Java-Themen 3
H Problem mit der Klasse Pattern - Regulärer Ausdruck Allgemeine Java-Themen 2
S Regulärer Ausdruck tut überhaupt nichts Allgemeine Java-Themen 2
M Regulärer Ausdruck Allgemeine Java-Themen 6
Iron Monkey Regulärer Ausdruck Allgemeine Java-Themen 2
T Regulärer Ausdruck Allgemeine Java-Themen 6
S Regulärer Ausdruck für HTML-Tag Allgemeine Java-Themen 18
P [Regulärer Ausdruck] Auf Gruppe mit Quantifier separat zugreifen? Allgemeine Java-Themen 2
J Regulärer Ausdruck - Der Punkt und der Zeilenumbruch Allgemeine Java-Themen 6
Iron Monkey Regulärer Ausdruck Allgemeine Java-Themen 6
A Regulärer Ausdruck für die Uhrzeit Allgemeine Java-Themen 3
G Regulärer Ausdruck Allgemeine Java-Themen 4
M Regulärer Ausdruck Allgemeine Java-Themen 3
P Regulärer Ausdruck um sich wiederholende Zeichen zu finden. Allgemeine Java-Themen 9
P Problem - Regulärer Ausdruck funktioniert nicht Allgemeine Java-Themen 5
J Regulärer Ausdruck Allgemeine Java-Themen 3
N Regulärer Ausdruck Allgemeine Java-Themen 2
M Regulärer Ausdruck Allgemeine Java-Themen 2
B regulärer ausdruck Allgemeine Java-Themen 9
T Einfacher regulärer Ausdruck Allgemeine Java-Themen 2
A Regulärer Ausdruck EMail-Prüfung Allgemeine Java-Themen 3
N Regulärer Ausdruck Allgemeine Java-Themen 2
N Regulären Ausdruck in normalen Java-Code umwandeln Allgemeine Java-Themen 12
G JavaFX var Ausdruck Allgemeine Java-Themen 1
S Hex Ausdruck kürzen Allgemeine Java-Themen 34
LimDul Hä? Lambda-Ausdruck geht, Methoden-Referenz nicht Allgemeine Java-Themen 8
L Erste Schritte Ausdruck schöner schreiben? Allgemeine Java-Themen 8
J Frage zu regulärem Ausdruck Allgemeine Java-Themen 2
H Reg Exp Ausdruck erweitern Allgemeine Java-Themen 2
A Bestimmte Sonderzeichen im Regulären Ausdruck Allgemeine Java-Themen 2
B Problem mit Regulärem Ausdruck Allgemeine Java-Themen 4
J RegEx Ausdruck Allgemeine Java-Themen 2
G RegEx- Ausdruck Allgemeine Java-Themen 4
L String Replace mit Regulärem Ausdruck Allgemeine Java-Themen 2
O Text mit Wildcard gegen regulären Ausdruck prüfen Allgemeine Java-Themen 3
T Ausdruck mit pdfBox macht Probleme Allgemeine Java-Themen 2
M Ausgabe in Datei zum Ausdruck Allgemeine Java-Themen 2
F Problem mit regulären Ausdruck in Zusammenhang mit HTML Allgemeine Java-Themen 8
X String zerlegen mittels regulärem Ausdruck Allgemeine Java-Themen 31
M Wertepaar in relulärem Ausdruck Allgemeine Java-Themen 15
A Regulären Ausdruck für Funktionsnamen Allgemeine Java-Themen 4
M Regulären Ausdruck negieren Allgemeine Java-Themen 6
G Frage zu Regulärem Ausdruck Allgemeine Java-Themen 2
S regex-Pattern Ausdruck negieren Allgemeine Java-Themen 2
L Passwort mit Regulärem Ausdruck prüfen Allgemeine Java-Themen 6
I Composite Pattern für Ausgabe von Ausdruck Allgemeine Java-Themen 3
X problem mit regulären ausdruck Allgemeine Java-Themen 3
F Problem mit regulärem Ausdruck Allgemeine Java-Themen 6
M backreference im regulären ausdruck Allgemeine Java-Themen 9
A Probleme Umwandlung Ausdruck String in double Allgemeine Java-Themen 4
P Dateinamen mit regulärem Ausdruck testen Allgemeine Java-Themen 9

Ähnliche Java Themen

Neue Themen


Oben