Heim >Java >javaLernprogramm >Warum funktioniert mein Regex nicht in Javas String.matches()?
Regex funktioniert nicht in String.matches()
Frage:
A Der Benutzer hat einen Codeausschnitt geschrieben, um Zeichenfolgen abzugleichen, die nur Kleinbuchstaben enthalten Buchstaben:
String[] words = {"{apf","hum_","dkoe","12f"}; for(String s:words) { if(s.matches("[a-z]")) { System.out.println(s); } }
Der Code gibt jedoch nichts aus, obwohl „dkoe“ als Ausgabe erwartet wird.
Antwort:
Im Gegenteil Wie der Name schon sagt, gleicht die String.matches()-Methode von Java die gesamte Eingabezeichenfolge mit einem regulären Ausdruck ab. Um nur einen Teil der Zeichenfolge abzugleichen, verwenden Sie stattdessen Muster und Matcher:
Pattern p = Pattern.compile("[a-z]+"); Matcher m = p.matcher(inputString); if (m.find()) // match
Wenn Sie alternativ die gesamte Zeichenfolge abgleichen möchten, hängen Sie a an die Zeichenklasse in der Methode „matches()“ an:
if(s.matches("[a-z]+"))
Oder verwenden Sie ein vollständiges Regex-Muster:
if(s.matches("^[a-z]+$"))
Damit werden Zeichenfolgen gefunden, die nur Kleinbuchstaben enthalten, wie die Anker ^ und $ Stellen Sie sicher, dass die Übereinstimmung die gesamte Eingabezeichenfolge abdeckt.
Das obige ist der detaillierte Inhalt vonWarum funktioniert mein Regex nicht in Javas String.matches()?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!