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

Java Discussion :

[Expression régulière] Caractères en hexadécimal


Sujet :

Java

  1. #1
    Membre confirmé Avatar de Kcirtap
    Inscrit en
    Juillet 2005
    Messages
    553
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 553
    Points : 523
    Points
    523
    Par défaut [Expression régulière] Caractères en hexadécimal
    Bonjour,

    je dois m'assurer qu'une chaîne correspond à la spécification suivante :
    Les caractères admis sont les caractères dont le code en hexadécimal est compris entre 20 et 7E.
    J'ai essayé ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string.matches("[\\x20-\\x7E]");
    Mais je n'ai pas le résultat attendu.

    Est-ce que quelqu'un aurait une idée ?

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 936
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 936
    Points : 4 356
    Points
    4 356
    Par défaut
    Citation Envoyé par Kcirtap Voir le message
    Bonjour,

    je dois m'assurer qu'une chaîne correspond à la spécification suivante :


    J'ai essayé ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string.matches("[\\x20-\\x7E]");
    Mais je n'ai pas le résultat attendu.

    Est-ce que quelqu'un aurait une idée ?
    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
     
    import java.lang.* ;
     
    public class Main {
     
    	static public void main(String argv[]) {
    		argv = new String[] { "12345", "ABED", "acbkjhkj" , "0x4564654" , " 0x4564654", "0X45Aef" } ;
     
    		for(String s : argv) {
    			System.out.println(s + " matches(\\p{XDigit}+) " + s.matches("\\p{XDigit}+")) ;
    			System.out.println(s + " matches(^0x\\p{XDigit}+) " + s.matches("^0x\\p{XDigit}+")) ;
    			System.out.println("trim(" + s + ") matches(\\p{XDigit}+|^0[xX]\\p{XDigit}+) " + s.trim().matches("\\p{XDigit}+|^0[xX]\\p{XDigit}+")) ;
    			System.out.println() ;
    		}
    	}
    }
    12345 matches(\p{XDigit}+) true
    12345 matches(^0x\p{XDigit}+) false
    trim(12345) matches(\p{XDigit}+|^0[xX]\p{XDigit}+) true

    ABED matches(\p{XDigit}+) true
    ABED matches(^0x\p{XDigit}+) false
    trim(ABED) matches(\p{XDigit}+|^0[xX]\p{XDigit}+) true

    acbkjhkj matches(\p{XDigit}+) false
    acbkjhkj matches(^0x\p{XDigit}+) false
    trim(acbkjhkj) matches(\p{XDigit}+|^0[xX]\p{XDigit}+) false

    0x4564654 matches(\p{XDigit}+) false
    0x4564654 matches(^0x\p{XDigit}+) true
    trim(0x4564654) matches(\p{XDigit}+|^0[xX]\p{XDigit}+) true

    0x4564654 matches(\p{XDigit}+) false
    0x4564654 matches(^0x\p{XDigit}+) false
    trim( 0x4564654) matches(\p{XDigit}+|^0[xX]\p{XDigit}+) true

    0X45Aef matches(\p{XDigit}+) false
    0X45Aef matches(^0x\p{XDigit}+) false
    trim(0X45Aef) matches(\p{XDigit}+|^0[xX]\p{XDigit}+) true


    Program exited with status 0.

  3. #3
    Membre confirmé Avatar de Kcirtap
    Inscrit en
    Juillet 2005
    Messages
    553
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 553
    Points : 523
    Points
    523
    Par défaut
    Merci pour ta réponse.

    N'est-il pas possible de le faire en un seul appel à String.matches(..) ?

    Je cherche toujours

  4. #4
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    A ma connaissance \x n'a aucune signification particulier pour les regexp, donc ton pattern signifie :
    Une lettre parmi : x, 2, 7, E ou entre 0 et x



    Ceci devrait mieux correspondre à tes attentes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    matches("[\u0020-\u007E]")

    a++

  5. #5
    Membre confirmé Avatar de Kcirtap
    Inscrit en
    Juillet 2005
    Messages
    553
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 553
    Points : 523
    Points
    523
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Salut,

    A ma connaissance \x n'a aucune signification particulier pour les regexp, donc ton pattern signifie :
    Une lettre parmi : x, 2, 7, E ou entre 0 et x



    Ceci devrait mieux correspondre à tes attentes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    matches("[\\u0020-\\u007E]")

    a++
    Merci adiGuba,

    effectivement, le paramètre que tu m'as donné semble fonctionné.

    J'ai seulement rajouté * à la fin pour tester tous les caractères de la chaîne.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    matches("[\\u0020-\\u007E]*")
    Merci beaucoup pour ton aide.

  6. #6
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 936
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 936
    Points : 4 356
    Points
    4 356
    Par défaut
    Citation Envoyé par Kcirtap Voir le message
    Merci pour ta réponse.

    N'est-il pas possible de le faire en un seul appel à String.matches(..) ?

    Je cherche toujours
    oops, lu trop vite : ce n'est pas lire des nombres en hexa que vous cherchez à lire…
    sorry…

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 01/03/2013, 10h50
  2. Expression régulière : caractère "^"
    Par SkyBioSS dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 16/07/2008, 09h45
  3. Expressions Régulières, caractères spéciaux { ( | etc.
    Par bobbyWAR dans le forum Général Java
    Réponses: 3
    Dernier message: 13/05/2008, 17h45
  4. [C#] Caractères hexadécimal avec expressions régulières
    Par shinchan dans le forum Windows Forms
    Réponses: 4
    Dernier message: 16/01/2006, 11h41
  5. Réponses: 4
    Dernier message: 24/08/2005, 18h40

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