Maison > Java > javaDidacticiel > le corps du texte

Pourquoi String.replaceAll(regex) remplace-t-il deux fois lors de l'utilisation de \'.*\' ?

Susan Sarandon
Libérer: 2024-10-31 16:03:46
original
613 Les gens l'ont consulté

Why does String.replaceAll(regex) replace twice when using

Pourquoi String.replaceAll(regex) remplace deux fois

Dans l'extrait de code :

System.out.println("test".replaceAll(".*", "a"));
Copier après la connexion

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 :

  • Lors du premier passage, .* correspond à la chaîne entière et la remplace par "a".
  • Lors du deuxième passage, .* correspond à une chaîne vide à la fin de l'entrée (puisqu'elle peut correspondre à zéro caractère) et la remplace par un autre "a".

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 :

  • Utilisez .replaceFirst() pour remplacer uniquement la première occurrence :
"test".replaceFirst(".*", "a")
Copier après la connexion
  • Utilisez .matches() pour vérifier si la chaîne entière correspond à l'expression régulière donnée :
System.out.println("test".matches(".*")); // Prints true
Copier après la connexion
  • Utilisez une expression régulière plus spécifique, telle que . qui nécessite au moins un caractère :
System.out.println("test".replaceAll(".+", "a")); // Prints a
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!