Rechercher : dans
Par :

[Perl] Suppr d'espaces en début de ligne

Dernière réponse le 20 oct 2005 à 15:27:11 batmat, le 20 oct 2005 à 10:01:25 
 Signaler ce message aux modérateurs

Salut à tous,

J'ai un petit souci avec une expression régulière Perl.
Je fais un test avec le petit programme suivant :

#!/usr/bin/perl -w
use strict;

my $text = " hey bonjour\n         \t          pof pif";

print "$text\n";
$text =~ s/^[ \t]+//g;
print "$text\n";


Normalement, le deuxième print devrait m'afficher
hey bonjour
pof pif


Au lieu de ça, le remplacement semble ne fonctionner que sur la première ligne ?! Ça me donne donc :
hey bonjour
                          pof pif


J'ai testé ce bout de code sous windows avec cygwin et sur une debian, le résultat est le même.

Je ne comprends pas du tout ce comportement : je dis bien supprime moi (s) tout espace ou tabulation ([ \t]+) et ce pour toutes les occurrences (/g).

Quelqu'un voit pourquoi ça fonctionne pas et surtout quelle serait la solution à ce souci ?

Merci
@++
Si chacun de nous a une idée et que nous les partageon
tous les deux avec deux idées... C'est ça le Libre.

Meilleures réponses pour « [Perl] Suppr d'espaces en début de ligne » dans :
Sed - Trucs et astuces Voir Substitution Affichage Suppression Espace et tabulation Ligne vide Intervalle régulier Divers Joindre des lignes Affichage insensible à la casse Substitution Substituer "foo" par "bar" à chaque ligne Seulement la 1ère...
Sed - Supprimer une ou plusieurs lignes d'un fichier VoirSupprimer une (ou plusieurs) ligne(s) d'un fichier Syntaxe sed '{[/]||[/]}d' sed '{[/][,][/]d' /.../ = délimiteurs n = le numéro de ligne chaîne = la chaîne contenue dans la...
Comment lire un fichier ligne par ligne VoirComment lire un fichier ligne par ligne Préambule Boucle while Syntaxe Exemple Astuces Bonus Boucle for Syntaxe Préambule Une des erreurs les plus communes dans l'apprentissage des scripts "bash" sous GNU/LInux pour lire un fichier...
Sed - Substitution VoirSubstitution Substitution basique Simple Globale Ciblée Substitution conditionnée Simplee Avancée Bloc Avancéé Substitution basique Simple - 1ère occurrence (de chaque ligne) rencontrée uniquement sed 's/la/LA/' fichier.txt
Perl - Les fichiers VoirLa notion de filehandle On appelle filehandle (traduisez descripteur de fichier), dans un programme Perl, le nom permettant de manipuler une connexion d'entrée-sortie (les entrées-sorties standards vues précédemment sont connues par les filehandles...

1

wiwimagique, le 20 oct 2005 à 10:38:49

L'accent circonflexe indique que les espaces doivent être en début de chaîne uniquement.

Si tu veux tout enlever, enlève le ^
Dans sa voiture rouge et jaune

Répondre à wiwimagique

2

batmat, le 20 oct 2005 à 10:45:34

Oui, je sais. Désolé, je ne l'ai pas redit dans ma phrase récapitulative. Mais, l'exemple où je montre la différence d'affichage entre ce que j'attends et ce que j'obtiens montre que je ne veux supprimer que les espaces en début de ligne avant le texte.

Merci qd même.
@++
Si chacun de nous a une idée et que nous les partageon
tous les deux avec deux idées... C'est ça le Libre.

Répondre à batmat

3

 batmat, le 20 oct 2005 à 15:27:11

Bon, j'ai trouvé la réponse :

Il suffit de mettre /mg au lieu de simplement /g. Ça fait considérer la chaîne de caractères comme une chaîne multi-ligne.

Sinon, le ^est compris comme le début d'une chaîne et non tout caractère suivant \n.

@++ Si chacun de nous a une idée et que nous les partageon
tous les deux avec deux idées... C'est ça le Libre.

Répondre à batmat