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 :

pb regexp et Hexa


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Avril 2013
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Avril 2013
    Messages : 11
    Par défaut pb regexp et Hexa
    Bonjour,

    j'ai pas tout compris aux regexp avec les hexa, aussi je pose ma question ici en souhaitant que l'un d'entre vous aura la réponse.

    Voila, je souhaite rechercher une séquence Hexa dans une chaine, pour ça :

    Je génère une chaine d'hexa avec dechex() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for($i=0; $i<10; $i++) $chaine .= dechex(rand(0,1));
    et je veux chercher tous les 1:
    ce pattern ne me retourne rien.

    J'ai pourtant bien une chaine d'hexa, si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pattern = '#[[:xdigit:]]+#';
    il me retourne bien toute la séquence.

    Ou est le problème, qu'est ce qui m'a échappé ?

    Merci.

  2. #2
    Membre Expert Avatar de dmganges
    Homme Profil pro
    Retraité. Ne recherche pas un emploi.
    Inscrit en
    Septembre 2011
    Messages
    1 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité. Ne recherche pas un emploi.
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 1 452
    Par défaut
    Bonjour,
    Je ne suis pas un dieu des regex mais puisqu'il est tôt...
    En attendant que les dieux se lèvent, je me lance :
    J'utiliserai plutôt :
    mieux :
    Et même en utf8 sur 2 octets :
    [Edit 06:01]
    Nous sommes d'accord :
    x{01} => SOH (Start of heading)
    le "1" décimal => x{31}

  3. #3
    Membre habitué
    Inscrit en
    Avril 2013
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Avril 2013
    Messages : 11
    Par défaut
    Bonjour

    merci de te pencher sur la question, c'est sympa d'aussi bon matin.
    Mais le pattern ne fonctionne pas.
    soit parce qu'il manquer les délimiteurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    '\x{01}' s ecrit plutôt '#\x{01}#'
    Soit parce que .... ben j'en sais rien !

  4. #4
    Membre Expert Avatar de dmganges
    Homme Profil pro
    Retraité. Ne recherche pas un emploi.
    Inscrit en
    Septembre 2011
    Messages
    1 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité. Ne recherche pas un emploi.
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 1 452
    Par défaut
    Je ne vois pas !
    Voici quelques transformations simples que je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $Lig =~ s/\x{064E}\x{0627}/\x{0627}/go; # Supprime Fatha devant Alif ?
        $Lig =~ s/\x{064E}\x{0649}/\x{0649}/go; # Supprime Fatha devant Alif marsour ?
        $Lig =~ s/\x{0650}\x{064A}/\x{064A}/go; # Supprime Kasra devant Ya ?
        $Lig =~ s/\x{064F}\x{0648}/\x{0648}/go; # Supprime Damma devant Oua ?
    il n'y a pas de #
    Je passe la main aux spécialistes

  5. #5
    Membre habitué
    Inscrit en
    Avril 2013
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Avril 2013
    Messages : 11
    Par défaut
    aie aie aie
    je suis confus. Je me suis trompé de forum !
    j'essaie ces regexp en PHP pas en Perl...
    désolé. Ceci-dit, ça regle pas mon problème, je vais allez voir sur php forum.

    Merci pour le temps passé.
    Cordialement

  6. #6
    Membre Expert Avatar de dmganges
    Homme Profil pro
    Retraité. Ne recherche pas un emploi.
    Inscrit en
    Septembre 2011
    Messages
    1 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité. Ne recherche pas un emploi.
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 1 452
    Par défaut
    RIEN de grave !!!
    Bonne continuation

  7. #7
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Plusieurs remarques.

    D'une part, dechex n'est pas à ma connaissance une fonction standard de Perl, je ne sais donc pas ce qu'elle retourne.

    Second point, la syntaxe de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for($i=0; $i<10; $i++) $chaine .= dechex(rand(0,1));
    n'est pas correcte et je ne pense pas que cela puisse compiler.

    Je ne sais donc pas ce qu'est censé contenir $chaine. Ce serait bien que tu nous affiches un exemple du contenu de ta $chaine.

    Enfin et surtout, ta syntaxe semble retourner une chaîne de caractères contenant une représentation hexadécimale d'un nombre ou d'une série de nombres. Comme il s'agit d'une chaîne de caractères, une simple regex ordinaire devrait fonctionner, comme dans la session suivante sous le debugger:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
      DB<1>  $c = sprintf ("%x", 241)
     
      DB<2> print $c
    f1
      DB<3> print $1 if $c =~ /(1)/
    1
      DB<4> print $1 if $c =~ /(.1)/
    f1
      DB<5>  $c = hex sprintf ("%x", 241)
     
      DB<6> print $c
    241
      DB<7> print $1 if $c =~ /(.1)/
    41
    Ou est-ce que je n'ai pas compris du tout ce que tu cherches à faire?

    EDIT: je n'avais pas vu les deux derniers messages quand j'ai posté. Mais je persiste à penser que tu as une chaîne de caractères, pas un nombre binaire, même en PHP.

Discussions similaires

  1. [RegEx] Par défaut pb regexp et Hexa
    Par nicolosko dans le forum Langage
    Réponses: 4
    Dernier message: 14/04/2013, 14h39
  2. [RegExp] Séparateur hexa
    Par s.n.a.f.u dans le forum Langage
    Réponses: 2
    Dernier message: 11/01/2007, 14h12
  3. [langage] [RegExp] Question d'expression régulière
    Par cloogy dans le forum Langage
    Réponses: 5
    Dernier message: 08/10/2003, 09h29
  4. regexp
    Par mathieu gérard dans le forum ASP
    Réponses: 4
    Dernier message: 02/10/2003, 18h05
  5. [débutant] conversion int en hexa
    Par sergoid dans le forum C++Builder
    Réponses: 6
    Dernier message: 16/05/2003, 11h11

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