Java Regex passt alle Zeichen außer

8

Was ist die richtige Syntax für die Übereinstimmung aller Zeichen außer bestimmten.

Zum Beispiel möchte ich alles außer den Buchstaben [A-Z] [a-z] und den Zahlen [0-9] zuordnen.

Ich habe

%Vor%

Ist das falsch?

    
Tommy 25.04.2013, 06:28
quelle

5 Antworten

18

Ja, Sie brauchen das verschachtelte [] nicht. Verwenden Sie stattdessen:

%Vor%

Es ist alles eine Zeichenklasse.

    
Paulpro 25.04.2013, 06:31
quelle
6

Wenn Sie alles außer Buchstaben anpassen möchten, sollten Sie sich die Unicode-Eigenschaften ansehen.

\p{L} ist eine beliebige Art von Buchstaben aus einer beliebigen Sprache

Wenn Sie stattdessen ein großes "P" verwenden, ist dies die Negation, also würde \P{L} mit allem übereinstimmen, das kein Buchstabe ist.

\d oder \p{Nd} sind übereinstimmende Ziffern

So würde Ihr Ausdruck im modernen Unicode-Stil so aussehen

Verwenden Sie eine negierte Zeichenklasse

%Vor%

oder negierte Eigenschaften

%Vor%

Als nächstes stimmt matches() mit dem Ausdruck gegen die vollständige Zeichenfolge überein, sodass Ihr Ausdruck nur mit genau einem Zeichen in der Zeichenfolge wahr ist. Sie müssten also einen Quantifizierer hinzufügen:

%Vor%

gibt true zurück, wenn die vollständige Zeichenfolge nur nicht-alphanumerische Zeichen und mindestens eine von ihnen enthält.

    
stema 25.04.2013 06:43
quelle
1

Fast richtig. Was Sie wollen, ist:

%Vor%

Hier ist ein gutes Tutorial

    
Miquel 25.04.2013 06:31
quelle
1
%Vor%     
Vasyl Keretsman 25.04.2013 06:30
quelle
0

Sagen wir, dass Sie sicherstellen wollen, dass keine Strings das _-Symbol in sich tragen, dann würden Sie einfach so etwas verwenden.

%Vor%     
Michael Riess 30.12.2013 02:12
quelle

Tags und Links