Heim >Java >javaLernprogramm >Warum funktioniert mein Regex nicht in Javas String.matches()?

Warum funktioniert mein Regex nicht in Javas String.matches()?

Susan Sarandon
Susan SarandonOriginal
2024-11-29 17:49:14329Durchsuche

Why Doesn't My Regex Work in Java's 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn