IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

Souci de Regex


Sujet :

Langage Perl

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    mars 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2009
    Messages : 21
    Points : 15
    Points
    15
    Par défaut Souci de Regex
    Bonjour c'est encore moi. J'ai poster il y a quelque jour pour un souci qui a été résolu grâce a vous^^

    Je vien maintenant pour un souci de regex découlant de l'ancien probléme. Le probléme que j'avais avant venait du fait que certaine de mes variables étaient "taunted", ce que je passais via une vérification par regex que voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if ($user_meeting =~ /^([-\@\w.]+)$/) {
    		$user_meeting = $1; 	# $data now untainted
           } 
    	else {
    		die "Bad data in '$user_meeting'";
    	}
    Sauf que voila aparament se Regex retourne faux s'il trouve un espace dans la variable, or j'ai besoin d'un espace sur une variable (au passage si quelqu'un peut me dire comment je peux entouré le contenu de cet variable par des guillemets sa serait bien aussi ...).

    Donc si quelqu'un peut m'aider je connait vraiment pas grand chose des regex et j'y arrive pas.

    Et au passage je cherche a optimiser un petit Regex don voici un exemple : $active =~ s/Active:\t\t\t//g;

    Je cherche juste à effacer les premier caractére d'une ligne sachant qu'une ligne est composé d'une premiére chaine de caractére fini par ":" ,de une ou plusieurs tabulation (ou pas du tout), puis de la chaîne que je conserve. Donc si ya moyen de faire un Regex qui prend en compte le fait du nombre de tabulmations et du fait qu'il ne peut ne psa en avoir sa serait vraiment bien pour des modifications ultérieurs par d'autre.

    Merci à tout ceux qui réfléchirons a sa, le premier probléme est assez important pour se que je veux faire mais le second est complétement facultatif, si vous avez pas envie d'y réfléchir, ya pas de soucis^^

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    mars 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2009
    Messages : 21
    Points : 15
    Points
    15
    Par défaut
    Bon je suis vraiment désolé mais en fait une bonne partie de l'erreur vient de moi^^

    Dans le premier cas se n'est pas le Regex qui est en cause, j'ai juste oublié un chomp sur la variable. En revanche j'ai toujours besoin de mettre des guillemets dans la variable.

    Je m'explique : la variable contient un nom, du genre $var = "Albert Dupond";
    Sauf que cette variable est ensuite utiliser dans un System, donc l'espace va causer un souci a se moment la.

    Le second Regex me pose aussi toujours probléme.

  3. #3
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 43
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Citation Envoyé par ApocalypseDuck Voir le message
    au passage si quelqu'un peut me dire comment je peux entouré le contenu de cet variable par des guillemets sa serait bien aussi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $user_meeting = qq{"$1"};


    Citation Envoyé par ApocalypseDuck Voir le message
    Et au passage je cherche a optimiser un petit Regex don voici un exemple : $active =~ s/Active:\t\t\t//g;
    Je cherche juste à effacer les premier caractére d'une ligne sachant qu'une ligne est composé d'une premiére chaine de caractére fini par ":" ,de une ou plusieurs tabulation (ou pas du tout), puis de la chaîne que je conserve
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $active =~ s/^\w+:\t*//;


    Citation Envoyé par ApocalypseDuck
    Je m'explique : la variable contient un nom, du genre $var = "Albert Dupond";
    Sauf que cette variable est ensuite utiliser dans un System, donc l'espace va causer un souci a se moment la.
    Que faut-il à la place de l'espace?
    -- Jasmine --

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    mars 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2009
    Messages : 21
    Points : 15
    Points
    15
    Par défaut
    Bon en fait jeme suis débloquer tout seul.

    Pour le probléme de l'espace je m'était juste embrouiller sur les emplacements des guillemets et des backslash donc le probléme d'espace est résolu aussi.

    Je test ton regex dans la matinée ou au pire durant l'aprem et je te dis si sa correspond a se que j'ai besoin.

    Déja un grand merci.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    mars 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2009
    Messages : 21
    Points : 15
    Points
    15
    Par défaut
    Donc aprés adaptation du code cela fonctionne... en partie .

    En effet tout se passe comme je le souhaite sauf a partir d'une certaine ligne ou le Regex ne fait plus effet et je me retrouve avec la ligne entiére dans le champ correspondant. Le champ d'avant est lui non plus pas bien remplie et je me demande si ce n'est pas ce cas la ou celui juste avant qui pose probléme car on tombe sur le cas ou il n'y a pas de tabulation puis sur le cas ou il n'y en a qu'une.

    Donc si y'en a qui on des idées sur le souci je suis preneur, de toute façon je bosse deçu en ce moment même donc je suis à votre écoute^^

    Pour info voila le code correspondant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    my ($user, $Emailaddress, $active, $admin, $meeting_req, $quota_overr,
    		$warnlvl, $softlvl, $hardlvl, $store_size);
    	open(DETAILS, "zarafa-admin --details $recept_user |") or die "probléme ouverture fichier";
     
    while (<DETAILS>){
    	if(m/^Fullname/){
    		$user = $_;
    		$user =~ s/^\w+:\t*//;
    		}
    	if(m/^Emailaddress/){
    		$Emailaddress = $_;
    		$Emailaddress =~ s/^\w+:\t*//;
    		}
    	if(m/^Active/){
    		$active = $_;
    		$active =~ s/^\w+:\t*//;
    		}
    	if(m/^Administrator/){
    		$admin = $_;
    		$admin =~ s/^\w+:\t*//;
    		}
    	if(m/^Auto-accept meeting/){
    		$meeting_req = $_;
    		$meeting_req =~ s/^\w+:\t*//;
    		}
    	if(m/^Quota overrides/){
    		$quota_overr = $_;
    		$quota_overr =~ s/^\w+:\t*//;
    		}
    	if(m/^Warning level/){
    		$warnlvl = $_;
    		$warnlvl =~ s/^\w+:\t*//;
    		}
    	if(m/^Soft level/){
    		$softlvl = $_;
    		$softlvl =~ s/^\w+:\t*//;
    		}
    	if(m/^Hard level/){
    		$hardlvl = $_;
    		$hardlvl =~ s/^\w+:\t*//;
    		}
    	if(m/^Current store size/){
    		$store_size = $_;
    		$store_size =~ s/^\w+:\t*//;
    		}
    }
     
    close(DETAILS);
    Les lignes posant problémes sont les lignes concernant le quota overrides et les 3 niveau d'alertes (warning, soft et hard). La ligne n'ayant aucune tabulation est la ligne conernant : Auto-accept meeting.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    mars 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2009
    Messages : 21
    Points : 15
    Points
    15
    Par défaut
    Bon bé en bataillant j'ai résolu mon probléme, jai du chompé un peu partout et indiqué le début de la chaine de caractére pour qu'il me coupe tout bien.

    Au final la partie qui posait probléme est devenu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    	if(m/^Auto-accept meeting/){
    		$meeting_req = $_;
    		chomp $meeting_req;
    		$meeting_req =~ s/Auto-accept meeting req:\t*//;
    		}
    	if(m/^Quota overrides/){
    		$quota_overr = $_;
    		chomp $quota_overr;
    		$quota_overr =~ s/Quota overrides:\t*//;	
    		}
    	if(m/^Warning level/){
    		$warnlvl = $_;
    		chomp $warnlvl;
    		$warnlvl =~ s/Warning level:\t*//;
    		}
    	if(m/^Soft level/){
    		$softlvl = $_;
    		chomp $softlvl;
    		$softlvl =~ s/Soft level:\t*//;
    		}
    	if(m/^Hard level/){
    		$hardlvl = $_;
    		chomp $hardlvl;
    		$hardlvl =~ s/Hard level:\t*//;
    		}
    	if(m/^Current store size/){
    		$store_size = $_;
    		chomp $store_size;
    		$store_size =~ s/^\w+:\t*//;
    		}
    Encore merci pour l'aide apporté.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 05/03/2010, 16h58
  2. soucis de regex
    Par Miaou le chat thon dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 10/12/2008, 15h32
  3. [RegEx] Souci des regex pour les puces donc erreurs W3C
    Par retour dans le forum Langage
    Réponses: 10
    Dernier message: 04/10/2008, 15h09
  4. Soucis avec regex.replace
    Par elric47 dans le forum ASP
    Réponses: 1
    Dernier message: 29/04/2008, 23h33
  5. [REGEX] Souci de regex
    Par LE NEINDRE dans le forum Langage
    Réponses: 5
    Dernier message: 27/02/2006, 09h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo