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

avec Java Discussion :

Perdu avec line.match et le format regex


Sujet :

avec Java

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2014
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2014
    Messages : 101
    Par défaut Perdu avec line.match et le format regex
    Bonjour,

    Je suis perdu avec regex et la vérification du bon format d'un fichier csv à 24 colonnes avec comme séparateur un point virgule (non présent à la fin). Le fait est que l'on peut avoir tout type de caractères dans chaque colonne et qu'il s'agit surtout de vérifier le format global de la ligne.

    Bref, j'ai tenté

    ^[A-Za-z0-9]+(;[A-Za-z0-9]){23}+$

    mais cela ne passe pas. De plus, je peux avoir des caractères spéciaux dans les colonnes.

    Je viens donc vous demander de l'aide et vous en remercie d'avance.

    Cordialement,

    Vinz

  2. #2
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 986
    Par défaut
    la vérification du bon format d'un fichier csv à 24 colonnes
    C'est pour l'instant le premier problème que tu dois résoudre: quel format est utilisé dans ce fichier csv? Car la définition même du format csv est quelque chose de plutôt flou étant donnée que cette appellation ne correspond pas à un standard précis.

    Pour ça, tu dois d'abord déterminer:
    • si ton fichier utilise éventuellement des caractères de protection comme par exemple les double quotes (") pour permettre à un champ de contenir le délimiteur (le point virgule dans ton cas). ex:"field;1";field2;field3...
    • si dans le cas précédent (dans un champ protégé) il existe un caractère d'échappement (typiquement un antislash ou le caractère de protection doublé) permettant de figurer le caractère de protection. ex: "field;\"1";field2... ou "field;""1";field2...
    • plus embêtant, si les sauts de ligne (autrement dit, le séparateur d'enregistrements) sont autorisés dans les champs, ce qui rendrait le contrôle du fichier ligne à ligne assez ardu. ex:
      Code txt : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      "field
      1";field2...


    Bien sûr, s'il n'y a rien de tout ça, il te suffit d'utiliser la négation dans les classes de caractères pour exclure le délimiteur (et du coup inclure tous les autres caractères). Je te laisse chercher.
    Mais tu peux aussi simplement compter le nombre de délimiteurs, utiliser le scanner (java.util.Scanner), ou encore OpenCSV (qui permet de préciser les caractères de protection).

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2014
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2014
    Messages : 101
    Par défaut
    En tout premier lieu je te remercie pour ta réponse. Je viens de regarder dans le fichier csv et la possibilité de mettre un " ou un , au sein d'un bout de texte correspondant à une cellule csv est possible.
    Je ne trouve pas le caractère \ devant le caractère ; mais l'arrivée d'un doublon au niveau des "" et de l'arrivée de deux " qui se trouvent respectivement en début et en fin de cellule lors de l'insertion d"un ;.

    Ci-dessous un morceau du fichier csv qui correspond à deux cellules contenant respectivement le texte : NOM et PR;E"NOM;
    J'ai tenté avec Scanner mais je bloque depuis le constat de l'arrivée de caractères qui imposent des changements. Quelle serait la meilleur méthode à utiliser ?

    Je te remercie d'avance pour la prise en considération de cette requête.

    Cordialement,

    Vinz

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2014
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2014
    Messages : 101
    Par défaut
    J'ai finalement trouvé une solution sur ce site : https://www.mkyong.com/java/how-to-r...-file-in-java/
    Merci pour l'aide apportée.

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

Discussions similaires

  1. requête avec option match
    Par sam01 dans le forum Requêtes
    Réponses: 1
    Dernier message: 23/05/2006, 17h19
  2. [ODBC] Je suis perdu avec ODBC
    Par Nowhere dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 19/05/2006, 08h50
  3. Un peu perdu avec sql server!
    Par jiluc dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 09/12/2005, 13h14
  4. Petit problème avec Line Input
    Par GrosQuicK dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 14/09/2005, 12h47
  5. Perdu avec la communication avec le port serie
    Par gilles641 dans le forum Langage
    Réponses: 8
    Dernier message: 23/08/2005, 20h11

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