Warum String.replaceAll(regex) zweimal ersetzt
Im Codeausschnitt:
System.out.println("test".replaceAll(".*", "a"));
der reguläre Ausdruck .* entspricht jedem Zeichen, einschließlich Nullzeichen. Dies bedeutet, dass die gesamte Zeichenfolge zweimal gefunden werden kann:
Dieses Verhalten wird nicht als Fehler in der Java-Regex-Engine angesehen . Stattdessen ist es eine Folge der Art und Weise, wie .* mit jedem Zeichen übereinstimmt.
Alternativen
Um dieses Verhalten zu vermeiden, können Sie die folgenden Alternativen verwenden:
"test".replaceFirst(".*", "a")
System.out.println("test".matches(".*")); // Prints true
System.out.println("test".replaceAll(".+", "a")); // Prints a
Das obige ist der detaillierte Inhalt vonWarum ersetzt String.replaceAll(regex) zweimal, wenn \'.*\' verwendet wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!