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 Java Discussion :

REGEX qui pose problème


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 44
    Par défaut REGEX qui pose problème
    Bonjour à tous,
    Mon problème, je voudrais ne pas afficher le INT-00000, hors, dans ma REGEX, j'ai bien positionné ?: pour le groupe (?:INT-0*) mais ça ne marche pas.

    Les données en entrées :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Numéro GCR :                 515566Libellé opération:            Ajout Iub sans modification HWN° service :                  77bCause probable :             Pb outil Description :FC HW_N60807_AJOUT_IUB.xml -Import:RNC-OK,NodeB-NOK
    un autre exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Numéro GCR : INT-00000249035Libellé opération: Swap ECTSN° service : 278Cause probable :Probleme cablageDescription : Digital Cable FailureProblème : Probleme de cablage RRUWs pour les secteurs 1 2 et 3
    Ma regex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (?:^Numéro GCR\\s*:?\\s*)(((?:INT-0*)\\d{6})|\\d{6})
    Le resultat en sortie de traitement :
    .---------------+---------------+--------------.
    | tLogRow_2 |
    |=--------------+---------------+-------------=|
    |NUMERO_INCIDENT|NUMERO_GCR |NUMERO_SERVICE|
    |=--------------+---------------+-------------=|
    |TI0000001282892|452443 |227 |
    |TI0000001284825|453948 |105 |
    |TI0000001288006|453575 |122 |
    |TI0000001288415|453159 |NA |
    |TI0000001294306|462658 |03 |
    |TI0000001295452|463426 |227 |
    |TI0000001302441|469263 |221 |
    |TI0000001307487|INT-00000394636|NA |
    |TI0000001307583|INT-00000407974|NA |
    |TI0000001307593|INT-00000461661|NA |
    |TI0000001307641|INT-00000423498|NA |
    |TI0000001310078|INT-00000478638|52 |

    hors j'attends ce résultat :
    .---------------+---------------+--------------.
    | tLogRow_2 |
    |=--------------+---------------+-------------=|
    |NUMERO_INCIDENT|NUMERO_GCR |NUMERO_SERVICE|
    |=--------------+---------------+-------------=|
    |TI0000001282892|452443 |227 |
    |TI0000001284825|453948 |105 |
    |TI0000001288006|453575 |122 |
    |TI0000001288415|453159 |NA |
    |TI0000001294306|462658 |03 |
    |TI0000001295452|463426 |227 |
    |TI0000001302441|469263 |221 |
    |TI0000001307487|394636 |NA |
    |TI0000001307583|407974 |NA |
    |TI0000001307593|461661 |NA |
    |TI0000001307641|423498 |NA |
    |TI0000001310078|478638 |52 |


    Mon code JAVA :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Pattern pattern = Pattern.compile("(?:^Numéro GCR\\s*:?\\s*)(((?:INT-0*)\\d{6})|\\d{6})");
    String [] tableau1;
    String temp;
    temp = input_row.DESCRIPTION;
    tableau1 = temp.split("\\r\n");
    output_row.NUMERO_GCR = "NA";
    for (String s : tableau1)
    {
    	Matcher matcher = pattern.matcher(s);
    	while (matcher.find())
    		{
    			output_row.NUMERO_GCR = matcher.group(1);
    		}
    }
    J'ai retourner ma REGEX dans tous les sens et rien à faire, est-ce un problème d'affichage du groupe (matcher.group(1)) ? car j'arrive à faire afficher sans le INT-00000 mais alors quand le groupe ne contient que les 6 chiffres, eux ne s'affichent pas.

    Bref, j'espères avoir été clair....(comme à mon habitude).

    Je vous remercie de votre aide,

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    (?:^Numéro GCR\\s*:?\\s*)(((?:INT-0*)\\d{6})|\\d{6})
    Les groupes capturés avec cette expression sont
    (((?:INT-0*)\\d{6})|\\d{6})
    et
    ((?:INT-0*)\\d{6})
    Autrement dit, dans les deux cas le préfixe INT-00000 en fait partie


    Il me semble, que ceci serait correct pour t'en débarasser simplement

    (?:^Numéro GCR\\s*:?\\s*)(?:INT-0*)?(\\d{6})
    où le seul groupe capturant est (\\d{6})

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 44
    Par défaut
    On peut dire que ça n'a pas trainé ! ! ! Merci beaucoup pour la rapidité de ta réponse, en effet, ça fonctionne beaucoup mieux comme ça.

    (?:INT-0*)?(\\d{6})

    Le point d'interrogation c'est bien pour dire 0 ou une fois l'expression précédente ?

    Merci,

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    oui

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

Discussions similaires

  1. [VBA]: Nom de champ qui pose problème
    Par Amitom dans le forum Access
    Réponses: 4
    Dernier message: 07/06/2007, 09h26
  2. [D5] Transtypage qui pose problème
    Par MelkInarian dans le forum Delphi
    Réponses: 4
    Dernier message: 06/04/2007, 16h38
  3. requete update qui pose problème
    Par kirian dans le forum Requêtes
    Réponses: 2
    Dernier message: 26/02/2007, 11h20
  4. code qui pose problème
    Par onePersonne dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 15/10/2006, 14h27
  5. Un cast de SmartPointer qui pose probléme
    Par Higestromm dans le forum C++
    Réponses: 3
    Dernier message: 13/10/2005, 10h25

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