2010-12-10 5 views
14

Im Grunde meine Frage ist, warum ist:Regex für Java's String.matches Methode?

String word = "unauthenticated"; 
word.matches("[a-z]"); 

falsche Rückkehr? (Entwickelt in java1.6)

Grundsätzlich möchte ich sehen, ob eine Zeichenfolge, die mir übergeben wird, Alpha-Zeichen enthält.

Antwort

22

Die String.matches() Funktion entspricht Ihren regulären Ausdruck gegen den ganzen Zeichenfolge (als ob Ihre regex ^ am Anfang und $ am Ende hatten). Wenn Sie innerhalb einer Zeichenfolge nach einem regulären Ausdruck suchen möchten, verwenden Sie Matcher.find().

Die richtige Methode hängt davon ab, was Sie tun möchten:

  1. Überprüfen Sie, ob Ihre Eingabezeichenfolge besteht ganz von Buchstaben (String.matches() mit [a-z]+)
  2. Überprüfen Sie, ob Ihre Eingabe-String zu sehen enthält jede alphabetisches Zeichen (und vielleicht einige andere) (Matcher.find() mit [a-z])
4

Ihr Code überprüft, ob das Wort mit einem Zeichen übereinstimmt. Was Sie prüfen möchten, ist, wenn das Wort eine beliebige Anzahl von Buchstaben entspricht wie folgt aus:

word.matches("[a-z]+"); 
+0

Ich habe das + Symbol in keinem Beispiel zuvor gesehen. Das Java mochte mich nicht mit * aus irgendeinem Grund, aber + funktioniert. Vielen Dank. – sMaN

+1

@Shaun, bedeutet das '+' 1 oder mehr des vorhergehenden Elements. – jjnguy

+0

@ Shaun83 - Java/Java Regexes haben keine Probleme mit einem '*' anstelle von '+' entweder. Vielleicht verlieren Sie es ... :-) –

1

mit [a-z] Sie Mathe für ein Zeichen.

Was sind Sie wahrscheinlich auf der Suche nach ist [a-z]*

Verwandte Themen