Pourquoi cela ne fonctionne-t-il pas?Comment puis-je remplacer plusieurs espaces avec un seul espace en Perl?
Répondre
Utilisez plutôt $data =~ s/ +/ /;
.
Explication:
Le tr
est l'opérateur translation. Une chose importante à noter à ce sujet est que les modificateurs regex ne s'appliquent pas dans une instruction de traduction (à l'exception de -
qui indique toujours une plage). Donc quand vous utilisez
tr/ +/ /
vous dites "Prenez chaque instance de l'espace des caractères et +
et traduisez-les en espace". En d'autres termes, le tr
pense à l'espace et +
en tant que caractères individuels, pas une expression régulière.
Démonstration:
$data = "What is the STA++TUS of your mind right now?";
$data =~ tr/ +/ /;
print $data; #Prints "What is the STA TUS of your mind right now?"
En utilisant s
fait ce que vous cherchez, en disant « correspond un nombre d'espaces consécutifs (au moins un cas) et les remplacer par un seul espace ». Vous pouvez également utiliser quelque chose comme
s/ +/ /g;
s'il y a plus d'un endroit où vous voulez que la substitution se produise (g
signifiant s'appliquer globalement).
Vous pouvez également utiliser tr
avec l'option "squash", qui supprimera les caractères remplacés en double. Voir perlop pour plus de détails.
my $s = "foo bar fubb";
$s =~ tr/ //s;
Perl 5.10 a une nouvelle classe de personnage, \h
, les stands pour un espace horizontal, ce qui est agréable pour ce genre de chose:
$s =~ s/\h+/ /g;
- 1. Comment remplacer plusieurs espaces avec un seul espace?
- 2. vim regex remplacer plusieurs espaces consécutifs avec un seul espace
- 3. php Remplacer plusieurs espaces avec un seul espace
- 4. Comment remplacer un ou plusieurs espaces consécutifs par un seul caractère?
- 5. Essayer de remplacer tous les espaces blancs par un seul espace
- 6. Comment puis-je accepter un seul espace en utilisant regexp
- 7. Comment remplacer plusieurs caractères différents avec des espaces blancs?
- 8. Supprimer tous les espaces en Javascript et les remplacer par des espaces simples
- 9. Diviser une chaîne avec plusieurs espaces blancs avec Perl?
- 10. Remplacer des espaces avec% 20 en C
- 11. Comment remplacer les fonctions Perl en activant plusieurs remplacements?
- 12. jquery remplacer <avec "" (un espace)
- 13. Comment remplacer un espace par un blanc en utilisant sed?
- 14. Comment remplacer chaque deuxième espace blanc?
- 15. Remplacer plusieurs contenus de tableau par un seul objet?
- 16. Comment remplacer plusieurs chaînes avec le remplacer() en Javascript
- 17. Comment copier plusieurs projets dans un seul dossier en eclipse
- 18. Comment remplacer un espace dans une URL en JavaScript?
- 19. En utilisant Perl, comment puis-je remplacer tous les espaces dans un fichier avec des retours à la ligne?
- 20. vérifier si un seul caractère est un espace?
- 21. Remplacer deux ou plusieurs espaces dans un fichier texte avec un;
- 22. printemps: plusieurs paramètres en un seul POST
- 23. Comment gorger plusieurs fichiers en Perl?
- 24. Comment effectuer plusieurs remplacements avec Perl?
- 25. Obtenir un seul nœud sans connaître son espace de noms
- 26. En Perl, comment mettre plusieurs paquets dans un seul fichier .pm?
- 27. Comment puis-je remplacer aeiou avec bfjpv en Perl?
- 28. comment remplacer un trait d'union avec espace vide/espace blanc? php
- 29. Ignorer les espaces avec Regex (perl)
- 30. Comment puis-je créer XmlDocument avec de nombreux espaces de noms xml dans un seul noeud?
explication très agréable et au point. – TCM