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 :

[regex] Automatic Match Variables


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    87
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 87
    Par défaut [regex] Automatic Match Variables
    Salut tout le monde,

    J ai un petit probleme avec les variables: $&, $` et $'.

    j ai une structure xml comme ca:
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <Layer>
    <Signal>ACLN_LN_RWDT / ACLN_LN_OFFS</Signal>
    </Layer>

    je veux avoir une structure comme ca:
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <Layer>
    <Signal>ACLN_LN_RWDT</Signal>
    <Signals_operator>/</Signal_operator>
    <Signal>ACLN_LN_OFFS</Signal>
    </Layer>
    alors le premier signal dans un tag ensuite un tag pour l operateur(+, -, / etc..) et un tag pour le deusieme operateur.

    j ai ecris ce morceau de code:
    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
     
    my @nodes1 = $root1->get_xpath('//Layer');
    for my $node1 (@nodes1){
    foreach my $nodes ($node1->children) {
    	if(($nodes->gi =~ /Signal$/)){
    	 if($nodes->text =~ /[\/\+\%\-\&\&&\|\*\||\ \t\n\f\r]/){
     
    		$writer->startTag('Signal');
    			$writer->characters($`);
    		$writer->endTag('Signal');
    		$writer->startTag('Signals_operator');
    			$writer->characters($&);
    		$writer->endTag('Signals_operator');
    		$writer->startTag('Signal');
    			$writer->characters($');
    		$writer->endTag('Signal');
     
    		}
    	else{
    		$writer->startTag('Signal');
    			$writer->characters($nodes->text);
    		$writer->endTag('Signal');}
    	}}
    mon probleme c est que j obtiens ce resultat:
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <Signal>ACLN_LN_RWDT</Name>
    <Signals_operator> </Signals_operator>
    <Signal>/ ACLN_LN_OFFS</Name>
    comme vous le constatez l operateur est dans le tag du 2eme signal et le signal_operator tag contient un espace!

    ca serait tres gentil de m aider un peu
    Merci!

  2. #2
    Membre confirmé
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    87
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 87
    Par défaut
    j ai trouvé ma faute.

    je teste les operateurs et l espace et puisque j ai un espace avant l operateur
    ca donner cet erreur fatale.

    merci en tout cas!

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

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if($nodes->text =~ /[\/\+\%\-\&\&&\|\*\||\ \t\n\f\r]/){
    Utilise plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if( $nodes->text =~  m{[/+%\-&|*\s]+} )

  4. #4
    Membre confirmé
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    87
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 87
    Par défaut
    salut Jasmine!

    la t as vraiment du talent!
    peux tu m eclairer un peu et me dire la diffirence entre les 2 regex et comment marche la 2eme?

    merci!

  5. #5
    Membre éprouvé
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Par défaut
    m{} évite de devoir échapper le slash par un backslash
    []+ on récupère 1 ou plusieurs des caractères de la liste
    \s contient \t\n\f\r et l'espace simple

    Dans les autres caractères, seul - nécessite l'échappement par \- car il permet de créer des groupes quand on est dans les crochets d'une regexp.


    perlreref
    [f-j] Le tiret permet la reconnaissance d'un ordre (NdT : les caractères de f à j)

    \s Reconnaît un caractère "blanc" [ \t\n\r\f] (espace, tabulation,...)

  6. #6
    Membre confirmé
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    87
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 87
    Par défaut
    Merci encore!

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

Discussions similaires

  1. [RegEx] regex url ou variable
    Par yule dans le forum Langage
    Réponses: 5
    Dernier message: 02/05/2009, 17h13
  2. [RegEx] Regex PCRE : Match un type string
    Par V3lkin dans le forum Langage
    Réponses: 9
    Dernier message: 27/11/2008, 17h51
  3. [RegEx] Regex avec des variables à l'interieur
    Par Kaldyris dans le forum Langage
    Réponses: 2
    Dernier message: 15/07/2008, 14h32
  4. [Regex] Récupérer des Variables dans une phrase.
    Par Jimmy_S dans le forum Windows Forms
    Réponses: 3
    Dernier message: 28/05/2008, 20h50
  5. [Regex] Pattern matching
    Par jeRame dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 26/06/2007, 14h28

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