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 :

String.matches() & pattern regex


Sujet :

Langage Java

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 523
    Points : 147
    Points
    147
    Par défaut String.matches() & pattern regex
    salut les spécialistes

    j'ai encore besoin de vous, mais vous allez expédier ça en 2 secondes, comme d'habitude!

    la logique des regex et moi, ça fait un moins 12, donc je rame!!
    une vraie quiche, j'avoue!!

    les faits:
    -> j'ai un String [] temp que je parcours
    -> je veux tester chaque indice pour repérer lesquels ne contiennent que des lettres, et éventuellement un '-'
    -> donc pour les min/maj, ça donnerait donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    temp[i].matches("([a-zA-Z])")
    -> ok mais quid de mon '-'? je le colle où?

    le but:
    -> repérer des noms de villes (Paris, Lyon, etc...) au milieu de data diverses (numériques, horaires)
    -> mais noms pouvant aussi être des noms composés (Saint-Etienne)

    j'ai déjà testé pleins de variantes, en tâtonnant, mais rien de bon pour le moment.

    alors merci de vos tuyaux

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    toujours dans les crochets, comme tous les caractères que tu veux matcher. La seule particularité étant que le caractère - est spécial entre crochets car il définis un range, tu dois donc l'échapper avec un \. Et comme pour le code java, les String statique prennent le \ comme un caractère spécial, tu dois le doubler:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    temp[i].matches("([a-zA-Z\\-])")

  3. #3
    Membre éprouvé
    Avatar de Cafeinoman
    Homme Profil pro
    Couteau suisse d'une PME
    Inscrit en
    Octobre 2012
    Messages
    628
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Couteau suisse d'une PME

    Informations forums :
    Inscription : Octobre 2012
    Messages : 628
    Points : 1 256
    Points
    1 256
    Par défaut
    Attention, si l'une de tes String contient un caractère accentué, elle ne sera pas valide. A voir si c'est gênant.
    «Dieu ne joue pas aux dés.» - Albert Einstein. Et pan! 30 ans de retard dans la théorie quantique!
    «Tout n'est pas politique, mais la politique s'intéresse à tout.» - Nicolas Machiavel. Et surtout à ceux qui ne s'y intéressent pas.

  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,


    Tu peux aussi tout simplement positionner le "-" juste avant le crochet final sans échappement : "([a-zA-Z-])" !


    Au passage il y a plusieurs autres choses que je modifierais :
    • Déjà ta regexp n'est pas bonne, puisque elle ne sera vrai que pour les chaines contenant un seul et unique caractère.
      Il faut rajouter un "+" derrière pour indiquer qu'il doit y avoir 1 caractère ou plus : "([a-zA-Z-]+)"
    • Les parenthèses ne servent à rien mis à part à créer un groupe. Tu peux les supprimer : "[a-zA-Z-]+".
    • Avec cette regexp tu ne prend pas les caractères accentuées. Il serait préférable de remplacer "a-zA-Z" par "\\p{L}" qui représente toutes les lettres Unicode, ou par "\\p{Latin}" qui représente toutes les lettres latines : "[\\p{IsLatin}-]+"
    • Enfin je rajouterais au moins la quote et l'espace (avec "\\s" qui représente tous les types d'espacement) : "[\\p{IsLatin}'\\s-]+"



    Au passage j'éviterais d'utiliser String.matches() dans ton cas.
    En effet comme tu parcours une boucle cela va récréer le pattern à chaque appel, ce qui est le plus couteux.

    Il est préférable de créer le pattern une seule fois et de le réutiliser, comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    	String[] temp = ...
     
    	Pattern pattern = Pattern.compile("[\\p{IsLatin}'\\s-]+");
    	for (String t : temp) {
    		if (pattern.matcher(t).matches()) {
    			...
    		}
    	}

    a++

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 523
    Points : 147
    Points
    147
    Par défaut
    Avec cette regexp tu ne prend pas les caractères accentuées. Il serait préférable de remplacer "a-zA-Z" par "\\p{L}" qui représente toutes les lettres Unicode, ou par "\\p{Latin}" qui représente toutes les lettres latines : "[\\p{IsLatin}-]+"
    salut,

    merci à tous pour votre participation.

    je viens d'essayer cette formule: problème, elle trouve également des data qui ne m'intéressent pas, comme par exemple
    -> 2016
    -> 20.30
    -> 832752

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Il serait préférable de remplacer "a-zA-Z" par "\\p{L}" qui représente toutes les lettres Unicode, ou par "\\p{Latin}" qui représente toutes les lettres latines
    latin représente tout le pan unicode latin script pas seulement des lettres. L devrait par contre faire l'affaire si j'en crois la doc unicode http://unicode.org/reports/tr44/#GC_Values_Table

  7. #7
    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
    Je ne reproduit pas ce problème.

    Tu pourrais montrer un code à minima qui reproduit cela ?


    a++

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    j'aurais du tester avant de l'ouvrir J'ai mal lu la doc sur le bloc unicode latin, je pensais que ça incluait tout le bloc 0000–00FF

  9. #9
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 523
    Points : 147
    Points
    147
    Par défaut
    Ok, je vais expliquer précisément ce que j'attends, peut être aurez-vous une autre approche meilleure que la mienne...

    Je travaille sur des fiches horaires pdf SNCF, comme par exemple:
    Nom : fiche_horaire.jpg
Affichages : 1218
Taille : 104,6 Ko

    -> j'extrais les data du pdf dans un String buffer "page":
    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
    Mulhouse - Thann - Kruth
    N'oubliez pas de vous reporter aux renvois ci-dessous
    du 3 avril au 2 juillet 2016
    Du lundi au vendredi sauf jours fériés
    Lun à 
    Ven
    Lun à 
    Ven
    Lun à 
    Ven
    Lun à 
    Ven
    Lun à 
    Ven
    Mulhouse 05.34 05.54
    Gare-Centrale 05.50
    Porte-Jeune 05.54
    Daguerre 06.00
    Mulhouse Dornach 05.38 06.05 05.58  
    Lutterbach (Ht-Rhin) 05.41  06.10
    Graffenwald 05.46 06.16
     
    etc...
    -> je split la page en N lignes (selon CR):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    buffer.split("\\r?\\n")
    -> et chaque ligne en N colones (selon blancs):
    -> pour récupérer les horaires avec un regex
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    matches("([01]?[0-9]|2[0-3]).[0-5][0-9]"))
    Tout ceci fonctionne parfaitement....... mais ce que je voudrais maintenant, c'est récupérer aussi tous les arrêts de la ligne, pour les coller dans une table de configuration!

    Mulhouse
    Gare-Centrale
    Porte-Jeune
    Daguerre
    Mulhouse Dornach
    Lutterbach (Ht-Rhin)
    Graffenwald
    Cernay
    Vieux-Thann-Zi
    Vieux-Thann
    Thann (A)
    Thann (D)
    Thann (centre)
    Thann St Jacques
    Bitschwiller (Ht-Rhin)
    Willer-sur-Thur
    Moosch
    St-Amarin
    Ranspach
    Wesserling
    Fellering
    Oderen
    Kruth

    Donc au départ je pensais repérer mes arrêts comme ça:
    SI on a 1 séquence aaaaaaaa-aaaaaaa + 99.99 -> Mulhouse ou Gare-Centrale (les colonnes vides ne sont pas conservées quand pdf -> buffer string)
    OU SI on a 1 séquence aaaaaaaa-aaaaaaa + aaaaaaaa-aaaaaaa + 99.99 -> Lutterbach (Ht-Rhin) ou Thann (A)

    Mais ça ressemble surtout à 1 usine à gaz tout ça!!

    Et surtout lors de cette détection
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Mulhouse - Thann - Kruth
    N'oubliez pas de vous reporter aux renvois ci-dessous
    du 3 avril au 2 juillet 2016
    Du lundi au vendredi sauf jours fériés
    Lun à 
    Ven
    Lun à 
    Ven
    Lun à 
    Ven
    Lun à 
    Ven
    Lun à 
    Ven
    seraient aussi considérés comme des arrêts, avec ce regex................

    Donc pas LA bonne solution de toute façon!!

  10. #10
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Avec Pattern pattern = Pattern.compile("\\s+(?=\\d)");(une ou plusieurs espaces suivies d'un chiffre) et un pattern.split(line), tu obtiendras un tableau dont le premier élément est le nom de la gare, et les autres les horaires.

    Mulhouse 05.34 05.54 => [Mulhouse, 05.34, 05.54]
    Gare-Centrale 05.50 => [Gare-Centrale, 05.50]
    Porte-Jeune 05.54 => [Porte-Jeune, 05.54]
    Daguerre 06.00 => [Daguerre, 06.00]
    Mulhouse Dornach 05.38 06.05 05.58 => [Mulhouse Dornach, 05.38, 06.05, 05.58]
    Lutterbach (Ht-Rhin) 05.41 06.10 => [Lutterbach (Ht-Rhin), 05.41, 06.10]
    Graffenwald 05.46 06.16 => [Graffenwald, 05.46, 06.16]
    [EDIT]Ah, puis, j'y pense seulement, si tu veux avoir les colonnes d'horaires vides : Pattern pattern = Pattern.compile("\\s(?=\\d)|\\s(?=\\s)");
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  11. #11
    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
    Citation Envoyé par steph68b Voir le message
    Je travaille sur des fiches horaires pdf SNCF,
    Houlà du traitement de données non-formaté ! Ca peut vite devenir galère !



    Tu es obligé d'utiliser le PDF ?
    L'Open Data de la SNCF me semblerait plus approprié : https://data.sncf.com/api


    a++

  12. #12
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 523
    Points : 147
    Points
    147
    Par défaut
    Effectivement, ton couple regex + split fonctionne parfaitement .......... mais comme je disais ça ne règle pas le problème de "cohérence" de la détection des arrêts , pour ça que je disais que ce n'était sûrement pas la bonne méthode finalement.

    -> rouge = regex OK mais pas un arrêt pour autant
    -> vert = regex & arrêt OK

    PAGE 1 colonne 0: Mulhouse - Thann - Kruth
    PAGE 1 colonne 0: N'oubliez pas de vous reporter aux renvois ci-dessous
    PAGE 1 colonne 0: du
    PAGE 1 colonne 0: Du lundi au vendredi sauf jours fériés
    PAGE 1 colonne 0: Lun à
    PAGE 1 colonne 0: Ven
    PAGE 1 colonne 0: Lun à
    PAGE 1 colonne 0: Ven
    PAGE 1 colonne 0: Lun à
    PAGE 1 colonne 0: Ven
    PAGE 1 colonne 0: Lun à
    PAGE 1 colonne 0: Ven
    PAGE 1 colonne 0: Lun à
    PAGE 1 colonne 0: Ven
    PAGE 1 colonne 0: Lun à
    PAGE 1 colonne 0: Ven
    PAGE 1 colonne 0: Lun à
    PAGE 1 colonne 0: Ven
    PAGE 1 colonne 0: Lun à
    PAGE 1 colonne 0: Ven
    PAGE 1 colonne 0: Lun à
    PAGE 1 colonne 0: Ven
    PAGE 1 colonne 0: Lun à
    PAGE 1 colonne 0: Ven
    PAGE 1 colonne 0: Lun à
    PAGE 1 colonne 0: Ven
    PAGE 1 colonne 0: Lun à
    PAGE 1 colonne 0: Ven
    PAGE 1 colonne 0: Lun à
    PAGE 1 colonne 0: Ven
    PAGE 1 colonne 0: Lun à
    PAGE 1 colonne 0: Ven
    PAGE 1 colonne 0: Lun à
    PAGE 1 colonne 0: Ven
    PAGE 1 colonne 0: Lun à
    PAGE 1 colonne 0: Ven
    PAGE 1 colonne 0: Lun à
    PAGE 1 colonne 0: Ven
    PAGE 1 colonne 0: Lun à
    PAGE 1 colonne 0: Ven
    PAGE 1 colonne 0: Lun à
    PAGE 1 colonne 0: Ven
    PAGE 1 colonne 0: Lun à
    PAGE 1 colonne 0: Ven
    PAGE 1 colonne 0: Lun à
    PAGE 1 colonne 0: Ven
    PAGE 1 colonne 0: Lun à
    PAGE 1 colonne 0: Ven
    PAGE 1 colonne 0: Lun à
    PAGE 1 colonne 0: Ven
    PAGE 1 colonne 0: Lun à
    PAGE 1 colonne 0: Ven
    PAGE 1 colonne 0: Lun à
    PAGE 1 colonne 0: Ven
    PAGE 1 colonne 0: Lun à
    PAGE 1 colonne 0: Ven
    PAGE 1 colonne 0: Lun à
    PAGE 1 colonne 0: Ven
    PAGE 1 colonne 0: Lun à
    PAGE 1 colonne 0: Ven
    PAGE 1 colonne 0: 1
    PAGE 1 colonne 0: TT TT TT TT TT TT TT TT TT TT TT TT TT TT TT TT TT TT

    PAGE 1 colonne 0: Mulhouse
    PAGE 1 colonne 0: Gare-Centrale
    PAGE 1 colonne 0: Porte-Jeune


    Et merci pour regex des colonnes vides, mais il est, malheureusement pour moi, inutile car l'import du PDF dans le buffer texte ne les conserve pas!!
    Les zones étant vides, elles sont supprimées purement et simplement

    J'avais fait plein de tests avec ma classe d'importation du pdf, et avec d'autres aussi, mais rien n'y fait: impossible de représenter fidèlement la mise en page du pdt dans le buffer texte!
    -> les colonnes sont vides, pas à <space> ou un autre caractère quelconque
    -> elles sont donc ignorées et non importées

  13. #13
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 523
    Points : 147
    Points
    147
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Houlà du traitement de données non-formaté ! Ca peut vite devenir galère !



    Tu es obligé d'utiliser le PDF ?
    L'Open Data de la SNCF me semblerait plus approprié : https://data.sncf.com/api


    a++
    Je n'ai pas exploré cette piste puisque pour mon programme "de base" le pdf suffisait.
    Maintenant j'essaye de le perfectionner, voire de le rendre universel et pas adapté uniquement à mon besoin.......... et c'est là que ça se complique.......

  14. #14
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Pour ne pas traiter les premières lignes, il suffit de les passer, sans appliquer l'expression régulière : tu cherches la dernière ligne qui vaut "ven" par exemple (ou toute autre règle pertinente), et tu appliques la regex après...

    Pour les colonnes d'horaires vides, j'ai juste remarqué qu'il y avait des horaires séparés par deux espaces au lieu d'une, donc je pensais que ça correspondaient à des colonnes d'horaires vides.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  15. #15
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 523
    Points : 147
    Points
    147
    Par défaut
    Oui, mais c'est de la prog à la carte, appliquée à cette fiche horaire, pas quelque chose de générique comme je voudrais le faire.


    Mais effectivement, à mon avis, impossible de faire ça avec des data pdf.............
    -> je n'ai pas exploré cette piste puisque pour mon programme "de base" le pdf suffisait.
    -> maintenant j'essaye de le perfectionner, voire de le rendre universel et pas adapté uniquement à mon besoin.......... et c'est là que ça se complique nettement.......

    SI je voulais vraiment faire un dev générique/général ALORS il faudrait passer par les API (que je suppose payantes) ET surtout revoir totalement l'archi de mon appli........... et quasiment repartir d'une feuille blanche.

    Donc, je ne sais pas si ça vaut le coup, au final.

  16. #16
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 523
    Points : 147
    Points
    147
    Par défaut
    Pour les colonnes d'horaires vides, j'ai juste remarqué qu'il y avait des horaires séparés par deux espaces au lieu d'une, donc je pensais que ça correspondaient à des colonnes d'horaires vides.
    Effectivement, j'avais aussi vu ça, ce qui m'a fait explorer cette piste.
    Mais le "phénomène" est aléatoire, malheureusement... parfois 1 <space>, parfois 2 ou 3... impossible d'appliquer 1 règle là dessus.

  17. #17
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par steph68b Voir le message
    Oui, mais c'est de la prog à la carte, appliquée à cette fiche horaire, pas quelque chose de générique comme je voudrais le faire.
    C'est sûr que si tu veux parser n'importe quelle fiche horaire, quelle que soit sa forme et son contenu, tu n'y arriveras pas comme ça, par parsing. Mais ce n'est pas seulement un problème avec les premières lignes, mais avec le parsing des lignes d'horaires en elle-mêmes (sinon, il suffirait de chercher quelque chose qui ressemble à ... par regex au lieu de cherche ce qui commence après quelque chose). La solution de l'API avec des connecteurs spécifiques restent la seule envisageable.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Petit détail qui a son importance en parsant un pdf (oui j'ai fait ça une fois dans le passé galère galère), il faut savoir qui rien ne garantie que e flux de texte que tu reçois correspond à la structure logique à l'écran. Tu peux très bien recevoir la case 3,2 puis la case 3,3 puis la 5,1 puis la 2,4 etc, ça suit l'ordre qui a été opéré par le moteur de rendu pdf. Bref, il y a une api open data, utilise là!

  19. #19
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 523
    Points : 147
    Points
    147
    Par défaut
    Voilà, erreur de direction!

    Merci à vous.

  20. #20
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 523
    Points : 147
    Points
    147
    Par défaut
    Je réouvre le topic vite fait:
    -> SI quelqu'un a déjà bossé avec les api SNCF, il pourrait me contacter ou expliquer ici les grandes lignes?

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

Discussions similaires

  1. REGEX suppression d'un string match
    Par zxrzxrzxr69 dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 01/06/2016, 12h19
  2. [Pattern][Regex] vérifier que mon email est valide
    Par anitshka dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 23/05/2011, 13h03
  3. [RegExp] string.match() difficile
    Par PaC_1250 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 25/05/2007, 13h24
  4. Type unit, type string, match with
    Par lioudow dans le forum Caml
    Réponses: 8
    Dernier message: 12/02/2007, 17h12
  5. [Regexp] String.matches
    Par scifire dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 21/11/2005, 17h25

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