Pourquoi String.replaceAll(regex) remplace deux fois
Dans l'extrait de code :
System.out.println("test".replaceAll(".*", "a"));
l'expression régulière .* correspond à n’importe quel caractère, y compris zéro caractère. Cela signifie qu'il peut faire correspondre la chaîne entière deux fois :
Ce comportement n'est pas considéré comme un bug dans le moteur d'expression régulière Java . Au lieu de cela, c'est une conséquence de la façon dont .* correspond à n'importe quel caractère.
Alternatives
Pour éviter ce comportement, vous pouvez utiliser les alternatives suivantes :
"test".replaceFirst(".*", "a")
System.out.println("test".matches(".*")); // Prints true
System.out.println("test".replaceAll(".+", "a")); // Prints a
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!