Heim >Java >javaLernprogramm >Warum funktioniert „String.matches()' mit regulären Ausdrücken nicht wie erwartet?
String.matches() stimmt nicht mit dem erwarteten regulären Ausdruck überein
Beim Versuch, ein bestimmtes Muster mit String.matches("[a-z ]"), ist es überraschend, dass es nicht wie erwartet funktioniert, obwohl die Zeichenfolge Kleinbuchstaben enthält Buchstaben.
Erklärung:
Die String.matches()-Methode in Java dient dazu, festzustellen, ob die gesamte Eingabezeichenfolge mit dem bereitgestellten regulären Ausdruck übereinstimmt. In diesem Fall versucht der Ausdruck „[a-z]“, einen einzelnen Kleinbuchstaben zu finden. Der Code überprüft jedoch jede Zeichenfolge im Wortarray, von der keine mit einem Kleinbuchstaben beginnt.
Lösung:
Um ein Muster innerhalb einer Zeichenfolge abzugleichen, eine sollte die Klassen Pattern und Matcher verwenden. Die Pattern-Klasse kompiliert den regulären Ausdruck in ein Matcher-Objekt, das dann verwendet werden kann, um nach Übereinstimmungen in der Eingabezeichenfolge zu suchen.
Hier ist eine modifizierte Version des Codes, der Pattern und Matcher verwendet, um Übereinstimmungen zu finden:
Pattern p = Pattern.compile("[a-z]+"); for(String s:words) { Matcher m = p.matcher(s); if (m.find()) { System.out.println(s); } }
Dieser Code gibt jetzt korrekt „dkoe“ aus.
Das obige ist der detaillierte Inhalt vonWarum funktioniert „String.matches()' mit regulären Ausdrücken nicht wie erwartet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!