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 :

Comprendre une Regex


Sujet :

Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2022
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Juin 2022
    Messages : 43
    Points : 24
    Points
    24
    Par défaut Comprendre une Regex
    Bonjour,

    J'aimerai savoir ce que veux dire ce pattern Regex suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String spattern = "L((?!0)\\d{1,4})_C(\\d{1,4})_\\W.*?L\\1_C\\d{3}_\".*?\"(?:,?\$?)";
    et surtout le ,?\$? du "non-capturing group" à la fin svp :

    Merci

  2. #2
    Membre averti
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mai 2020
    Messages
    326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mai 2020
    Messages : 326
    Points : 439
    Points
    439
    Par défaut
    Bonjour,

    Au vu de l'intérêt que vous portez aux regex, le mieux serait de vous y coller:

    + Pour comprendre votre regex : https://regexr.com/
    + Pour écrire des regex : https://docs.oracle.com/javase/7/doc...x/Pattern.html

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2022
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Juin 2022
    Messages : 43
    Points : 24
    Points
    24
    Par défaut
    C'est pas la réponse que j'attendais...

    Déjà fait depuis 3 semaines mais je bloque sur la compréhension des "non capturing group".

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Bah c'est un groupe, avec des parenthèses, genre, on peut lui appliquer les opérateurs, comme + ou * ou ? ou {2} ou n'importe quel autre, sur l'ensemble du groupe au lieu de sur une seule lettre.

    Et il ne capture pas, donc il ne fait pas partie des groupes qu'on peut citer dans la suite de la regex, ni qu'on peut extraire après application de la regex. Notamment il n'incrémente pas le nombre de groupes.

    Bref c'est juste des parenthèses normales. Il faut ignorer le ?: du début. Et se rappeler qu'on pourra pas l'extraire ensuite.

    "A quoi ça sert ?" Pas à grand-chose, ça évite éventuellement de se perdre dans le décompte des groupes extractibles en évitant d'en ajouter d'autres, et dans des cas rares ça peut limiter les ressources dédiées au stockage des groupes détectés.

    Pour le ,?\$? c'est juste l'opérateur ? normal. Ça veut dire "une virgule, ou pas. Qu'elle soit là ou non, ensuite il y a un signe dollar, ou pas."

    On peut raisonnablement penser que le signe dollar n'aurait pas dû être échappé avec \$, et qu'il aurait dû être un simple $ qui signifie que la fin du texte doit se trouver là.
    Et du coup, vraisemblablement ça aurait dû être,


    pour "soit une virgule, soit la fin du texte".
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2022
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Juin 2022
    Messages : 43
    Points : 24
    Points
    24
    Par défaut
    Merci thelvin.

    1. Dans le fichier csv, il n'ya pas de $ donc le ?\$? a une autre signification (je pense qu'il permet de dire fin de ligne ou retour à la ligne.
    Quand je met le pipe (?:,|?\$?), j'ai un msg d'erreur rouge :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Reason:
    java.util.regex.PatternSyntaxException: Dangling meta character '?' near index 53
    L((?!0)\d{1,4})_C(\d{1,4})_\W.*?L\1_C\d{3}_".*?"(?:,|?$?)
    2. Et pour ce bout de code en gras stp ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    
    String spattern = "L((?!0)\\d{1,4})_C(\\d{1,4})_\\W.*?L\\1_C\\d{3}_\".*?\"(?:,?\$?)";
    3. avec ce pattern, voici ce que j'obtiens comme résultat mais qui ne me convient pas :
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    L5_C1_"1"_KO,L5_C2_"3260"_KO,L5_C3_"CHK_CASHING_CHECK_CREDITED_20210329_3260_EUR_S"_KO,L5_C4_"01"_OK,L5_C5_""_OK,L5_C6_""_OK,L5_C7_""_OK,L5_C8_"LINE"_OK,L5_C9_"INVOICE"_OK,L5_C10_"000013759000000005"_KO,L5_C11_""_OK,L5_C12_"S"_OK,L5_C13_""_OK,L5_C14_"200.00000"_OK,L5_C15_"2021/03/29"_OK,L5_C16_"00100.261107100.00000.00000.00000.00000.00000.00000"_KO,L5_C17_"00100.251110000.00000.00000.00000.00000.00000.00000"_OK,L5_C18_"N"_OK,L5_C19__OK,L5_C20_""_OK,L5_C21_""_OK,L5_C22_""_OK,L5_C23_""_OK,L5_C24_""_OK,L5_C25_""_OK,L5_C26_""_OK,L5_C27_""_OK,L5_C28_""_OK,L5_C29_""_OK,L5_C30_"FRSXME00"_OK,L5_C31_""_OK,L5_C32_""_OK,L5_C33_""_OK,L5_C34_""_OK,L5_C35_""_OK,L5_C36_""_OK,L5_C37_""_OK,L5_C38_""_OK,L5_C39_""_OK,L5_C40_""_OK,L5_C41_""_OK,L5_C42_""_OK,L5_C43_""_OK,L5_C44_""_OK,L5_C45_""_OK,L5_C46_""_OK,L5_C47_""_OK,L5_C48_""_OK,L5_C49_""_OK,L5_C50_""_OK,L5_C51_""_OK,L5_C52_""_OK,L5_C53_""_OK,L5_C54_""_OK,L5_C55_""_OK,L5_C56_""_OK,L5_C57_"ECO_SUBACCOUNT_MANAGE_16598_3097146656_20210329151227"_OK,L5_C58_""_OK,L5_C59_"3260.FR.ISIE.AUTRES.ZXIH.SALES.zip"_KO,L5_C60_""_OK,L5_C61_""_OK,L5_C62_"000013760000000001"_KO,L5_C63_""_OK,L5_C64_""_OK,L5_C65_""_OK,L5_C66_""_OK,L5_C67_""_OK,L5_C68_""_OK,L5_C69_""_OK,L5_C70_""_OK,L5_C71_""_OK,L5_C72_""_OK,L5_C73_""_OK,L5_C74_""_OK,L5_C75_""_OK,L5_C76_""_OK,L5_C77_""_OK,L5_C78_""_OK,L5_C79_""_OK,L5_C80_""_OK,L5_C81_""_OK,L5_C82_""_OK,L5_C83_""_OK,L5_C84_""_OK,L5_C85_""_OK,L5_C86_""_OK,L5_C87_""_OK,L5_C88_""_OK,L5_C89_""_OK,L5_C90_""_OK,L5_C91_""_OK,L5_C92_""_OK,L5_C93_""_OK,L5_C94_""_OK,L5_C95_""_OK,L5_C96_""_OK,L5_C97_""_OK,L5_C98_""_OK,L5_C99_""_OK,L5_C100_""
    L5_C101_""_OK,L5_C102_""
    L5_C103_""_OK,L5_C104_""
    L5_C105_""_OK,L5_C106_""
    L5_C107_""_OK,L5_C108_""
    L5_C109_""_OK,L5_C110_""
    L5_C111_""_OK,L5_C112_""
    L5_C113_""_OK,L5_C114_""
    L5_C115_""_OK,L5_C116_""
    L5_C117_"13759000000005"_KO,L5_C118_""
    L5_C119_""_OK,L5_C120_"END"
    L6_C1_"1"_KO,L6_C2_"3260"_KO,L6_C3_"CHK_CASHING_CHECK_CREDITED_20210329_3260_EUR_S"_KO,L6_C4_"02"_OK,L6_C5_""_OK,L6_C6_""_OK,L6_C7_""_OK,L6_C8_"LINE"_OK,L6_C9_"INVOICE"_OK,L6_C10_"000013759000000006"_KO,L6_C11_""_OK,L6_C12_"S"_OK,L6_C13_""_OK,L6_C14_"200.00000"_OK,L6_C15_"2021/03/29"_OK,L6_C16_"00100.261107100.00000.00000.00000.00000.00000.00000"_KO,L6_C17_"00100.262104100.00000.00000.00000.00000.00000.00000"_OK,L6_C18_"N"_OK,L6_C19__OK,L6_C20_""_OK,L6_C21_""_OK,L6_C22_""_OK,L6_C23_""_OK,L6_C24_""_OK,L6_C25_""_OK,L6_C26_""_OK,L6_C27_""_OK,L6_C28_""_OK,L6_C29_""_OK,L6_C30_"FRSXME00"_OK,L6_C31_""_OK,L6_C32_""_OK,L6_C33_""_OK,L6_C34_""_OK,L6_C35_""_OK,L6_C36_""_OK,L6_C37_""_OK,L6_C38_""_OK,L6_C39_""_OK,L6_C40_""_OK,L6_C41_""_OK,L6_C42_""_OK,L6_C43_""_OK,L6_C44_""_OK,L6_C45_""_OK,L6_C46_""_OK,L6_C47_""_OK,L6_C48_""_OK,L6_C49_""_OK,L6_C50_""_OK,L6_C51_""_OK,L6_C52_""_OK,L6_C53_""_OK,L6_C54_""_OK,L6_C55_""_OK,L6_C56_""_OK,L6_C57_"ECO_SUBACCOUNT_MANAGE_16598_3097146656_20210329151227"_OK,L6_C58_""_OK,L6_C59_"3260.FR.ISIE.AUTRES.ZXIH.SALES.zip"_KO,L6_C60_""_OK,L6_C61_""_OK,L6_C62_"000013760000000001"_KO,L6_C63_""_OK,L6_C64_""_OK,L6_C65_""_OK,L6_C66_""_OK,L6_C67_""_OK,L6_C68_""_OK,L6_C69_""_OK,L6_C70_""_OK,L6_C71_""_OK,L6_C72_""_OK,L6_C73_""_OK,L6_C74_""_OK,L6_C75_""_OK,L6_C76_""_OK,L6_C77_""_OK,L6_C78_""_OK,L6_C79_""_OK,L6_C80_""_OK,L6_C81_""_OK,L6_C82_""_OK,L6_C83_""_OK,L6_C84_""_OK,L6_C85_""_OK,L6_C86_""_OK,L6_C87_""_OK,L6_C88_""_OK,L6_C89_""_OK,L6_C90_""_OK,L6_C91_""_OK,L6_C92_""_OK,L6_C93_""_OK,L6_C94_""_OK,L6_C95_""_OK,L6_C96_""_OK,L6_C97_""_OK,L6_C98_""_OK,L6_C99_""_OK,L6_C100_""
    L6_C101_""_OK,L6_C102_""
    L6_C103_""_OK,L6_C104_""
    L6_C105_""_OK,L6_C106_""
    L6_C107_""_OK,L6_C108_""
    L6_C109_""_OK,L6_C110_""
    L6_C111_""_OK,L6_C112_""
    L6_C113_""_OK,L6_C114_""
    L6_C115_""_OK,L6_C116_""
    L6_C117_"13759000000006"_KO,L6_C118_""
    L6_C119_""_OK,L6_C120_"END"
    L7_C1_"1"_KO,L7_C2_"3260"_KO,L7_C3_"CHK_CASHING_CHECK_IN_PROGRESS_20210329_3260_EUR_S"_KO,L7_C4_"03"_OK,L7_C5_""_OK,L7_C6_""_OK,L7_C7_""_OK,L7_C8_"LINE"_OK,L7_C9_"INVOICE"_OK,L7_C10_"000013759000000007"_KO,L7_C11_""_OK,L7_C12_"S"_OK,L7_C13_""_OK,L7_C14_"800.00000"_OK,L7_C15_"2021/03/29"_OK,L7_C16_"00100.121050000.00000.00000.00000.00000.00000.00000"_OK,L7_C17_"00100.381230000.00000.00000.00000.00000.00000.00000"_OK,L7_C18_"N"_OK,L7_C19__OK,L7_C20_""_OK,L7_C21_""_OK,L7_C22_""_OK,L7_C23_""_OK,L7_C24_""_OK,L7_C25_""_OK,L7_C26_""_OK,L7_C27_""_OK,L7_C28_""_OK,L7_C29_""_OK,L7_C30_"FRSXME00"_OK,L7_C31_""_OK,L7_C32_""_OK,L7_C33_""_OK,L7_C34_""_OK,L7_C35_""_OK,L7_C36_""_OK,L7_C37_""_OK,L7_C38_""_OK,L7_C39_""_OK,L7_C40_""_OK,L7_C41_""_OK,L7_C42_""_OK,L7_C43_""_OK,L7_C44_""_OK,L7_C45_""_OK,L7_C46_""_OK,L7_C47_""_OK,L7_C48_""_OK,L7_C49_""_OK,L7_C50_""_OK,L7_C51_""_OK,L7_C52_""_OK,L7_C53_""_OK,L7_C54_""_OK,L7_C55_""_OK,L7_C56_""_OK,L7_C57_"ECO_SUBACCOUNT_MANAGE_16598_3097146656_20210329151227"_OK,L7_C58_""_OK,L7_C59_"3260.FR.ISIE.AUTRES.ZXIH.SALES.zip"_KO,L7_C60_""_OK,L7_C61_""_OK,L7_C62_"000013760000000001"_KO,L7_C63_""_OK,L7_C64_""_OK,L7_C65_""_OK,L7_C66_""_OK,L7_C67_""_OK,L7_C68_""_OK,L7_C69_""_OK,L7_C70_""_OK,L7_C71_""_OK,L7_C72_""_OK,L7_C73_""_OK,L7_C74_""_OK,L7_C75_""_OK,L7_C76_""_OK,L7_C77_""_OK,L7_C78_""_OK,L7_C79_""_OK,L7_C80_""_OK,L7_C81_""_OK,L7_C82_""_OK,L7_C83_""_OK,L7_C84_""_OK,L7_C85_""_OK,L7_C86_""_OK,L7_C87_""_OK,L7_C88_""_OK,L7_C89_""_OK,L7_C90_""_OK,L7_C91_""_OK,L7_C92_""_OK,L7_C93_""_OK,L7_C94_""_OK,L7_C95_""_OK,L7_C96_""_OK,L7_C97_""_OK,L7_C98_""_OK,L7_C99_""_OK,L7_C100_""
    L7_C101_""_OK,L7_C102_""
    L7_C103_""_OK,L7_C104_""
    L7_C105_""_OK,L7_C106_""
    L7_C107_""_OK,L7_C108_""
    L7_C109_""_OK,L7_C110_""
    L7_C111_""_OK,L7_C112_""
    L7_C113_""_OK,L7_C114_""
    L7_C115_""_OK,L7_C116_""
    L7_C117_"13759000000007"_KO,L7_C118_""
    L7_C119_""_OK,L7_C120_"END"
    L8_C1_"1"_KO,L8_C2_"3260"_KO,L8_C3_"CHK_CASHING_CHECK_IN_PROGRESS_20210329_3260_EUR_S"_KO,L8_C4_"04"_OK,L8_C5_""_OK,L8_C6_""_OK,L8_C7_""_OK,L8_C8_"LINE"_OK,L8_C9_"INVOICE"_OK,L8_C10_"000013759000000008"_KO,L8_C11_""_OK,L8_C12_"S"_OK,L8_C13_""_OK,L8_C14_"800.00000"_OK,L8_C15_"2021/03/29"_OK,L8_C16_"00100.381230000.00000.00000.00000.00000.00000.00000"_OK,L8_C17_"00100.261107100.00000.00000.00000.00000.00000.00000"_KO,L8_C18_"N"_OK,L8_C19__OK,L8_C20_""_OK,L8_C21_""_OK,L8_C22_""_OK,L8_C23_""_OK,L8_C24_""_OK,L8_C25_""_OK,L8_C26_""_OK,L8_C27_""_OK,L8_C28_""_OK,L8_C29_""_OK,L8_C30_"FRSXME00"_OK,L8_C31_""_OK,L8_C32_""_OK,L8_C33_""_OK,L8_C34_""_OK,L8_C35_""_OK,L8_C36_""_OK,L8_C37_""_OK,L8_C38_""_OK,L8_C39_""_OK,L8_C40_""_OK,L8_C41_""_OK,L8_C42_""_OK,L8_C43_""_OK,L8_C44_""_OK,L8_C45_""_OK,L8_C46_""_OK,L8_C47_""_OK,L8_C48_""_OK,L8_C49_""_OK,L8_C50_""_OK,L8_C51_""_OK,L8_C52_""_OK,L8_C53_""_OK,L8_C54_""_OK,L8_C55_""_OK,L8_C56_""_OK,L8_C57_"ECO_SUBACCOUNT_MANAGE_16598_3097146656_20210329151227"_OK,L8_C58_""_OK,L8_C59_"3260.FR.ISIE.AUTRES.ZXIH.SALES.zip"_KO,L8_C60_""_OK,L8_C61_""_OK,L8_C62_"000013760000000001"_KO,L8_C63_""_OK,L8_C64_""_OK,L8_C65_""_OK,L8_C66_""_OK,L8_C67_""_OK,L8_C68_""_OK,L8_C69_""_OK,L8_C70_""_OK,L8_C71_""_OK,L8_C72_""_OK,L8_C73_""_OK,L8_C74_""_OK,L8_C75_""_OK,L8_C76_""_OK,L8_C77_""_OK,L8_C78_""_OK,L8_C79_""_OK,L8_C80_""_OK,L8_C81_""_OK,L8_C82_""_OK,L8_C83_""_OK,L8_C84_""_OK,L8_C85_""_OK,L8_C86_""_OK,L8_C87_""_OK,L8_C88_""_OK,L8_C89_""_OK,L8_C90_""_OK,L8_C91_""_OK,L8_C92_""_OK,L8_C93_""_OK,L8_C94_""_OK,L8_C95_""_OK,L8_C96_""_OK,L8_C97_""_OK,L8_C98_""_OK,L8_C99_""_OK,L8_C100_""
    L8_C101_""_OK,L8_C102_""
    4. Ce que je souhaite c'est d'avoir ce résultat ligne par ligne comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    L5_C1_"1"_KO,L5_C2_"3260"_KO,L5_C3_"CHK_CASHING_CHECK_CREDITED_20210329_3260_EUR_S"_KO,L5_C4_"01"_OK,L5_C5_""_OK,L5_C6_""_OK,L5_C7_""_OK,L5_C8_"LINE"_OK,L5_C9_"INVOICE"_OK,L5_C10_"000013759000000005"_KO,L5_C11_""_OK,L5_C12_"S"_OK,L5_C13_""_OK,L5_C14_"200.00000"_OK,L5_C15_"2021/03/29"_OK,L5_C16_"00100.261107100.00000.00000.00000.00000.00000.00000"_KO,L5_C17_"00100.251110000.00000.00000.00000.00000.00000.00000"_OK,L5_C18_"N"_OK,L5_C19__OK,L5_C20_""_OK,L5_C21_""_OK,L5_C22_""_OK,L5_C23_""_OK,L5_C24_""_OK,L5_C25_""_OK,L5_C26_""_OK,L5_C27_""_OK,L5_C28_""_OK,L5_C29_""_OK,L5_C30_"FRSXME00"_OK,L5_C31_""_OK,L5_C32_""_OK,L5_C33_""_OK,L5_C34_""_OK,L5_C35_""_OK,L5_C36_""_OK,L5_C37_""_OK,L5_C38_""_OK,L5_C39_""_OK,L5_C40_""_OK,L5_C41_""_OK,L5_C42_""_OK,L5_C43_""_OK,L5_C44_""_OK,L5_C45_""_OK,L5_C46_""_OK,L5_C47_""_OK,L5_C48_""_OK,L5_C49_""_OK,L5_C50_""_OK,L5_C51_""_OK,L5_C52_""_OK,L5_C53_""_OK,L5_C54_""_OK,L5_C55_""_OK,L5_C56_""_OK,L5_C57_"ECO_SUBACCOUNT_MANAGE_16598_3097146656_20210329151227"_OK,L5_C58_""_OK,L5_C59_"3260.FR.ISIE.AUTRES.ZXIH.SALES.zip"_KO,L5_C60_""_OK,L5_C61_""_OK,L5_C62_"000013760000000001"_KO,L5_C63_""_OK,L5_C64_""_OK,L5_C65_""_OK,L5_C66_""_OK,L5_C67_""_OK,L5_C68_""_OK,L5_C69_""_OK,L5_C70_""_OK,L5_C71_""_OK,L5_C72_""_OK,L5_C73_""_OK,L5_C74_""_OK,L5_C75_""_OK,L5_C76_""_OK,L5_C77_""_OK,L5_C78_""_OK,L5_C79_""_OK,L5_C80_""_OK,L5_C81_""_OK,L5_C82_""_OK,L5_C83_""_OK,L5_C84_""_OK,L5_C85_""_OK,L5_C86_""_OK,L5_C87_""_OK,L5_C88_""_OK,L5_C89_""_OK,L5_C90_""_OK,L5_C91_""_OK,L5_C92_""_OK,L5_C93_""_OK,L5_C94_""_OK,L5_C95_""_OK,L5_C96_""_OK,L5_C97_""_OK,L5_C98_""_OK,L5_C99_""_OK,L5_C100_"", L5_C101_""_OK,L5_C102_"", L5_C103_""_OK,L5_C104_"",L5_C105_""_OK,L5_C106_"", L5_C107_""_OK,L5_C108_"", L5_C109_""_OK,L5_C110_"", L5_C111_""_OK,L5_C112_"",L5_C113_""_OK,L5_C114_"", L5_C115_""_OK,L5_C116_"", L5_C117_"13759000000005"_KO,L5_C118_"", L5_C119_""_OK,L5_C120_"END"
    L6_C1_"1"_KO,L6_C2_"3260"_KO,L6_C3_"CHK_CASHING_CHECK_CREDITED_20210329_3260_EUR_S"_KO,L6_C4_"02"_OK,L6_C5_""_OK,L6_C6_""_OK,L6_C7_""_OK,L6_C8_"LINE"_OK,L6_C9_"INVOICE"_OK,L6_C10_"000013759000000006"_KO,L6_C11_""_OK,L6_C12_"S"_OK,L6_C13_""_OK,L6_C14_"200.00000"_OK,L6_C15_"2021/03/29"_OK,L6_C16_"00100.261107100.00000.00000.00000.00000.00000.00000"_KO,L6_C17_"00100.262104100.00000.00000.00000.00000.00000.00000"_OK,L6_C18_"N"_OK,L6_C19__OK,L6_C20_""_OK,L6_C21_""_OK,L6_C22_""_OK,L6_C23_""_OK,L6_C24_""_OK,L6_C25_""_OK,L6_C26_""_OK,L6_C27_""_OK,L6_C28_""_OK,L6_C29_""_OK,L6_C30_"FRSXME00"_OK,L6_C31_""_OK,L6_C32_""_OK,L6_C33_""_OK,L6_C34_""_OK,L6_C35_""_OK,L6_C36_""_OK,L6_C37_""_OK,L6_C38_""_OK,L6_C39_""_OK,L6_C40_""_OK,L6_C41_""_OK,L6_C42_""_OK,L6_C43_""_OK,L6_C44_""_OK,L6_C45_""_OK,L6_C46_""_OK,L6_C47_""_OK,L6_C48_""_OK,L6_C49_""_OK,L6_C50_""_OK,L6_C51_""_OK,L6_C52_""_OK,L6_C53_""_OK,L6_C54_""_OK,L6_C55_""_OK,L6_C56_""_OK,L6_C57_"ECO_SUBACCOUNT_MANAGE_16598_3097146656_20210329151227"_OK,L6_C58_""_OK,L6_C59_"3260.FR.ISIE.AUTRES.ZXIH.SALES.zip"_KO,L6_C60_""_OK,L6_C61_""_OK,L6_C62_"000013760000000001"_KO,L6_C63_""_OK,L6_C64_""_OK,L6_C65_""_OK,L6_C66_""_OK,L6_C67_""_OK,L6_C68_""_OK,L6_C69_""_OK,L6_C70_""_OK,L6_C71_""_OK,L6_C72_""_OK,L6_C73_""_OK,L6_C74_""_OK,L6_C75_""_OK,L6_C76_""_OK,L6_C77_""_OK,L6_C78_""_OK,L6_C79_""_OK,L6_C80_""_OK,L6_C81_""_OK,L6_C82_""_OK,L6_C83_""_OK,L6_C84_""_OK,L6_C85_""_OK,L6_C86_""_OK,L6_C87_""_OK,L6_C88_""_OK,L6_C89_""_OK,L6_C90_""_OK,L6_C91_""_OK,L6_C92_""_OK,L6_C93_""_OK,L6_C94_""_OK,L6_C95_""_OK,L6_C96_""_OK,L6_C97_""_OK,L6_C98_""_OK,L6_C99_""_OK,L6_C100_"", L6_C101_""_OK,L6_C102_"", L6_C103_""_OK,L6_C104_"",L6_C105_""_OK,L6_C106_"",L6_C107_""_OK,L6_C108_"", L6_C109_""_OK,L6_C110_"", L6_C111_""_OK,L6_C112_"",, L6_C113_""_OK,L6_C114_"", L6_C115_""_OK,L6_C116_"", L6_C117_"13759000000006"_KO,L6_C118_"", L6_C119_""_OK,L6_C120_"END"
    L7_C1_"1"_KO,L7_C2_"3260"_KO,L7_C3_etc...
    Ce que je ne comprend pas avec mon pattern actuel c'est pourquoi à partir de LX_C100 il va à la ligne et me met LX_C101_"eegetg"_ok, LX_C102_"eegetg" puis va encore à la ligne.
    C à ne rien y comprendre...


    J'y suis presque arrivée c'est sûûûûûure

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par JavaGuava Voir le message
    Quand je met le pipe (?:,|?\$?), j'ai un msg d'erreur rouge :

    Je suis à peu près sûr d'avoir dit ,|$ et non pas ,|?$? .

    Et d'avoir aussi dit pourquoi, à quelqu'un qui expliquait qu'il étudiait le sens des regex, et donc ne serait jamais allé taper cette bouillie bizarre.

    Citation Envoyé par JavaGuava Voir le message
    2. Et pour ce bout de code en gras stp ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    
    String spattern = "L((?!0)\\d{1,4})_C(\\d{1,4})_\\W.*?L\\1_C\\d{3}_\".*?\"(?:,?\$?)";
    L suivi de ce qui a été capturé dans le groupe 1, suivi de _ suivi de C suivi de 3 chiffres suivi de _ suivi de " suivi de n'importe quoi mais aussi court que possible, suivi de "

    Citation Envoyé par JavaGuava Voir le message
    Ce que je souhaite c'est d'avoir ce résultat ligne par ligne comme ceci:
    En - partant - de - quoi ?

    J'ai déjà compté que cette question t'avait été posée deux fois avant. Donc c'est la troisième. Au moins.

    Tu poses des questions mais tu ne travailles pas avec nous. Il faut que tu fasses ce qu'on te dit, tu sais. D'abord, pourquoi tu ne fais pas ce qu'on te dit, et ensuite, qu'est-ce que tu espères en ne le faisant pas ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2022
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Juin 2022
    Messages : 43
    Points : 24
    Points
    24
    Par défaut
    Je suis à peu près sûr d'avoir dit ,|$ et non pas ,|?$? .
    Oui, j'ai testé le ,|\$? en fait car si je fais juste ,|$? ca me met rouge au niveau du pipe.

    L suivi de ce qui a été capturé dans le groupe 1, suivi de _ suivi de C suivi de 3 chiffres suivi de _ suivi de " suivi de n'importe quoi mais aussi court que possible, suivi de "
    Oui actuellement mon ArrayList al3 (en provenance de mon fichier CSV) ressemble à cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    L101_C1_"titi"_OkoukO, L101_C2_"tata"_OkouKO, L102_LXXX_C3_"toto"_OkouKO, etc...L102_C1_"titi"_OkoukO, L102_C2_"tata"_OkouKO, L102_LXXX_C3_"toto"_OkouKO,
    L'objectif est d'obtenir ligne par ligne dans ma console :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    L5_C1_"1"_KO,L5_C2_"3260"_KO,L5_C3_"CHK_CASHING_CHECK_CREDITED_20210329_3260_EUR_S"_KO,L5_C4_"01"_OK,L5_C5_""_OK,L5_C6_""_OK,L5_C7_""_OK,L5_C8_"LINE"_OK,L5_C9_"INVOICE"_OK,L5_C10_"000013759000000005"_KO,L5_C11_""_OK,L5_C12_"S"_OK,L5_C13_""_OK,L5_C14_"200.00000"_OK,L5_C15_"2021/03/29"_OK,L5_C16_"00100.261107100.00000.00000.00000.00000.00000.00000"_KO,L5_C17_"00100.251110000.00000.00000.00000.00000.00000.00000"_OK,L5_C18_"N"_OK,L5_C19__OK,L5_C20_""_OK,L5_C21_""_OK,L5_C22_""_OK,L5_C23_""_OK,L5_C24_""_OK,L5_C25_""_OK,L5_C26_""_OK,L5_C27_""_OK,L5_C28_""_OK,L5_C29_""_OK,L5_C30_"FRSXME00"_OK,L5_C31_""_OK,L5_C32_""_OK,L5_C33_""_OK,L5_C34_""_OK,L5_C35_""_OK,L5_C36_""_OK,L5_C37_""_OK,L5_C38_""_OK,L5_C39_""_OK,L5_C40_""_OK,L5_C41_""_OK,L5_C42_""_OK,L5_C43_""_OK,L5_C44_""_OK,L5_C45_""_OK,L5_C46_""_OK,L5_C47_""_OK,L5_C48_""_OK,L5_C49_""_OK,L5_C50_""_OK,L5_C51_""_OK,L5_C52_""_OK,L5_C53_""_OK,L5_C54_""_OK,L5_C55_""_OK,L5_C56_""_OK,L5_C57_"ECO_SUBACCOUNT_MANAGE_16598_3097146656_20210329151227"_OK,L5_C58_""_OK,L5_C59_"3260.FR.ISIE.AUTRES.ZXIH.SALES.zip"_KO,L5_C60_""_OK,L5_C61_""_OK,L5_C62_"000013760000000001"_KO,L5_C63_""_OK,L5_C64_""_OK,L5_C65_""_OK,L5_C66_""_OK,L5_C67_""_OK,L5_C68_""_OK,L5_C69_""_OK,L5_C70_""_OK,L5_C71_""_OK,L5_C72_""_OK,L5_C73_""_OK,L5_C74_""_OK,L5_C75_""_OK,L5_C76_""_OK,L5_C77_""_OK,L5_C78_""_OK,L5_C79_""_OK,L5_C80_""_OK,L5_C81_""_OK,L5_C82_""_OK,L5_C83_""_OK,L5_C84_""_OK,L5_C85_""_OK,L5_C86_""_OK,L5_C87_""_OK,L5_C88_""_OK,L5_C89_""_OK,L5_C90_""_OK,L5_C91_""_OK,L5_C92_""_OK,L5_C93_""_OK,L5_C94_""_OK,L5_C95_""_OK,L5_C96_""_OK,L5_C97_""_OK,L5_C98_""_OK,L5_C99_""_OK,L5_C100_"", L5_C101_""_OK,L5_C102_"", L5_C103_""_OK,L5_C104_"",L5_C105_""_OK,L5_C106_"", L5_C107_""_OK,L5_C108_"", L5_C109_""_OK,L5_C110_"", L5_C111_""_OK,L5_C112_"",L5_C113_""_OK,L5_C114_"", L5_C115_""_OK,L5_C116_"", L5_C117_"13759000000005"_KO,L5_C118_"", L5_C119_""_OK,L5_C120_"END"
    L6_C1_"1"_KO,L6_C2_"3260"_KO,L6_C3_"CHK_CASHING_CHECK_CREDITED_20210329_3260_EUR_S"_KO,L6_C4_"02"_OK,L6_C5_""_OK,L6_C6_""_OK,L6_C7_""_OK,L6_C8_"LINE"_OK,L6_C9_"INVOICE"_OK,L6_C10_"000013759000000006"_KO,L6_C11_""_OK,L6_C12_"S"_OK,L6_C13_""_OK,L6_C14_"200.00000"_OK,L6_C15_"2021/03/29"_OK,L6_C16_"00100.261107100.00000.00000.00000.00000.00000.00000"_KO,L6_C17_"00100.262104100.00000.00000.00000.00000.00000.00000"_OK,L6_C18_"N"_OK,L6_C19__OK,L6_C20_""_OK,L6_C21_""_OK,L6_C22_""_OK,L6_C23_""_OK,L6_C24_""_OK,L6_C25_""_OK,L6_C26_""_OK,L6_C27_""_OK,L6_C28_""_OK,L6_C29_""_OK,L6_C30_"FRSXME00"_OK,L6_C31_""_OK,L6_C32_""_OK,L6_C33_""_OK,L6_C34_""_OK,L6_C35_""_OK,L6_C36_""_OK,L6_C37_""_OK,L6_C38_""_OK,L6_C39_""_OK,L6_C40_""_OK,L6_C41_""_OK,L6_C42_""_OK,L6_C43_""_OK,L6_C44_""_OK,L6_C45_""_OK,L6_C46_""_OK,L6_C47_""_OK,L6_C48_""_OK,L6_C49_""_OK,L6_C50_""_OK,L6_C51_""_OK,L6_C52_""_OK,L6_C53_""_OK,L6_C54_""_OK,L6_C55_""_OK,L6_C56_""_OK,L6_C57_"ECO_SUBACCOUNT_MANAGE_16598_3097146656_20210329151227"_OK,L6_C58_""_OK,L6_C59_"3260.FR.ISIE.AUTRES.ZXIH.SALES.zip"_KO,L6_C60_""_OK,L6_C61_""_OK,L6_C62_"000013760000000001"_KO,L6_C63_""_OK,L6_C64_""_OK,L6_C65_""_OK,L6_C66_""_OK,L6_C67_""_OK,L6_C68_""_OK,L6_C69_""_OK,L6_C70_""_OK,L6_C71_""_OK,L6_C72_""_OK,L6_C73_""_OK,L6_C74_""_OK,L6_C75_""_OK,L6_C76_""_OK,L6_C77_""_OK,L6_C78_""_OK,L6_C79_""_OK,L6_C80_""_OK,L6_C81_""_OK,L6_C82_""_OK,L6_C83_""_OK,L6_C84_""_OK,L6_C85_""_OK,L6_C86_""_OK,L6_C87_""_OK,L6_C88_""_OK,L6_C89_""_OK,L6_C90_""_OK,L6_C91_""_OK,L6_C92_""_OK,L6_C93_""_OK,L6_C94_""_OK,L6_C95_""_OK,L6_C96_""_OK,L6_C97_""_OK,L6_C98_""_OK,L6_C99_""_OK,L6_C100_"", L6_C101_""_OK,L6_C102_"", L6_C103_""_OK,L6_C104_"",L6_C105_""_OK,L6_C106_"",L6_C107_""_OK,L6_C108_"", L6_C109_""_OK,L6_C110_"", L6_C111_""_OK,L6_C112_"",, L6_C113_""_OK,L6_C114_"", L6_C115_""_OK,L6_C116_"", L6_C117_"13759000000006"_KO,L6_C118_"", L6_C119_""_OK,L6_C120_"END"
    L7_C1_"1"_KO,L7_C2_"3260"_KO,L7_C3_etc...
    Et actuellement (avec le pattern dont je dispose), à partir de LXXX_C100 il ne continue pas d'afficher sur la même ligne et je ne comprend pas pourquoi :

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    L5_C1_"1"_KO,L5_C2_"3260"_KO,L5_C3_"CHK_CASHING_CHECK_CREDITED_20210329_3260_EUR_S"_KO,L5_C4_"01"_OK,L5_C5_""_OK,L5_C6_""_OK,L5_C7_""_OK,L5_C8_"LINE"_OK,L5_C9_"INVOICE"_OK,L5_C10_"000013759000000005"_KO,L5_C11_""_OK,L5_C12_"S"_OK,L5_C13_""_OK,L5_C14_"200.00000"_OK,L5_C15_"2021/03/29"_OK,L5_C16_"00100.261107100.00000.00000.00000.00000.00000.00000"_KO,L5_C17_"00100.251110000.00000.00000.00000.00000.00000.00000"_OK,L5_C18_"N"_OK,L5_C19__OK,L5_C20_""_OK,L5_C21_""_OK,L5_C22_""_OK,L5_C23_""_OK,L5_C24_""_OK,L5_C25_""_OK,L5_C26_""_OK,L5_C27_""_OK,L5_C28_""_OK,L5_C29_""_OK,L5_C30_"FRSXME00"_OK,L5_C31_""_OK,L5_C32_""_OK,L5_C33_""_OK,L5_C34_""_OK,L5_C35_""_OK,L5_C36_""_OK,L5_C37_""_OK,L5_C38_""_OK,L5_C39_""_OK,L5_C40_""_OK,L5_C41_""_OK,L5_C42_""_OK,L5_C43_""_OK,L5_C44_""_OK,L5_C45_""_OK,L5_C46_""_OK,L5_C47_""_OK,L5_C48_""_OK,L5_C49_""_OK,L5_C50_""_OK,L5_C51_""_OK,L5_C52_""_OK,L5_C53_""_OK,L5_C54_""_OK,L5_C55_""_OK,L5_C56_""_OK,L5_C57_"ECO_SUBACCOUNT_MANAGE_16598_3097146656_20210329151227"_OK,L5_C58_""_OK,L5_C59_"3260.FR.ISIE.AUTRES.ZXIH.SALES.zip"_KO,L5_C60_""_OK,L5_C61_""_OK,L5_C62_"000013760000000001"_KO,L5_C63_""_OK,L5_C64_""_OK,L5_C65_""_OK,L5_C66_""_OK,L5_C67_""_OK,L5_C68_""_OK,L5_C69_""_OK,L5_C70_""_OK,L5_C71_""_OK,L5_C72_""_OK,L5_C73_""_OK,L5_C74_""_OK,L5_C75_""_OK,L5_C76_""_OK,L5_C77_""_OK,L5_C78_""_OK,L5_C79_""_OK,L5_C80_""_OK,L5_C81_""_OK,L5_C82_""_OK,L5_C83_""_OK,L5_C84_""_OK,L5_C85_""_OK,L5_C86_""_OK,L5_C87_""_OK,L5_C88_""_OK,L5_C89_""_OK,L5_C90_""_OK,L5_C91_""_OK,L5_C92_""_OK,L5_C93_""_OK,L5_C94_""_OK,L5_C95_""_OK,L5_C96_""_OK,L5_C97_""_OK,L5_C98_""_OK,L5_C99_""_OK,L5_C100_""
    L5_C101_""_OK,L5_C102_""
    L5_C103_""_OK,L5_C104_""
    L5_C105_""_OK,L5_C106_""
    L5_C107_""_OK,L5_C108_""
    L5_C109_""_OK,L5_C110_""
    L5_C111_""_OK,L5_C112_""
    L5_C113_""_OK,L5_C114_""
    L5_C115_""_OK,L5_C116_""
    L5_C117_"13759000000005"_KO,L5_C118_""
    L5_C119_""_OK,L5_C120_"END"
    L6_C1_"1"_KO,L6_C2_"3260"_KO,L6_C3_"CHK_CASHING_CHECK_CREDITED_20210329_3260_EUR_S"_KO,L6_C4_"02"_OK,L6_C5_""_OK,L6_C6_""_OK,L6_C7_""_OK,L6_C8_"LINE"_OK,L6_C9_"INVOICE"_OK,L6_C10_"000013759000000006"_KO,L6_C11_""_OK,L6_C12_"S"_OK,L6_C13_""_OK,L6_C14_"200.00000"_OK,L6_C15_"2021/03/29"_OK,L6_C16_"00100.261107100.00000.00000.00000.00000.00000.00000"_KO,L6_C17_"00100.262104100.00000.00000.00000.00000.00000.00000"_OK,L6_C18_"N"_OK,L6_C19__OK,L6_C20_""_OK,L6_C21_""_OK,L6_C22_""_OK,L6_C23_""_OK,L6_C24_""_OK,L6_C25_""_OK,L6_C26_""_OK,L6_C27_""_OK,L6_C28_""_OK,L6_C29_""_OK,L6_C30_"FRSXME00"_OK,L6_C31_""_OK,L6_C32_""_OK,L6_C33_""_OK,L6_C34_""_OK,L6_C35_""_OK,L6_C36_""_OK,L6_C37_""_OK,L6_C38_""_OK,L6_C39_""_OK,L6_C40_""_OK,L6_C41_""_OK,L6_C42_""_OK,L6_C43_""_OK,L6_C44_""_OK,L6_C45_""_OK,L6_C46_""_OK,L6_C47_""_OK,L6_C48_""_OK,L6_C49_""_OK,L6_C50_""_OK,L6_C51_""_OK,L6_C52_""_OK,L6_C53_""_OK,L6_C54_""_OK,L6_C55_""_OK,L6_C56_""_OK,L6_C57_"ECO_SUBACCOUNT_MANAGE_16598_3097146656_20210329151227"_OK,L6_C58_""_OK,L6_C59_"3260.FR.ISIE.AUTRES.ZXIH.SALES.zip"_KO,L6_C60_""_OK,L6_C61_""_OK,L6_C62_"000013760000000001"_KO,L6_C63_""_OK,L6_C64_""_OK,L6_C65_""_OK,L6_C66_""_OK,L6_C67_""_OK,L6_C68_""_OK,L6_C69_""_OK,L6_C70_""_OK,L6_C71_""_OK,L6_C72_""_OK,L6_C73_""_OK,L6_C74_""_OK,L6_C75_""_OK,L6_C76_""_OK,L6_C77_""_OK,L6_C78_""_OK,L6_C79_""_OK,L6_C80_""_OK,L6_C81_""_OK,L6_C82_""_OK,L6_C83_""_OK,L6_C84_""_OK,L6_C85_""_OK,L6_C86_""_OK,L6_C87_""_OK,L6_C88_""_OK,L6_C89_""_OK,L6_C90_""_OK,L6_C91_""_OK,L6_C92_""_OK,L6_C93_""_OK,L6_C94_""_OK,L6_C95_""_OK,L6_C96_""_OK,L6_C97_""_OK,L6_C98_""_OK,L6_C99_""_OK,L6_C100_""
    L6_C101_""_OK,L6_C102_""
    L6_C103_""_OK,L6_C104_""
    L6_C105_""_OK,L6_C106_""
    L6_C107_""_OK,L6_C108_""
    L6_C109_""_OK,L6_C110_""
    L6_C111_""_OK,L6_C112_""
    L6_C113_""_OK,L6_C114_""
    L6_C115_""_OK,L6_C116_""
    L6_C117_"13759000000006"_KO,L6_C118_""
    L6_C119_""_OK,L6_C120_"END"
    L7_C1_"1"_KO,L7_C2_"3260"_KO,L7_C3_"CHK_CASHING_CHECK_IN_PROGRESS_20210329_3260_EUR_S"_KO,L7_C4_"03"_OK,L7_C5_""_OK,L7_C6_""_OK,L7_C7_""_OK,L7_C8_"LINE"_OK,L7_C9_"INVOICE"_OK,L7_C10_"000013759000000007"_KO,L7_C11_""_OK,L7_C12_"S"_OK,L7_C13_""_OK,L7_C14_"800.00000"_OK,L7_C15_"2021/03/29"_OK,L7_C16_"00100.121050000.00000.00000.00000.00000.00000.00000"_OK,L7_C17_"00100.381230000.00000.00000.00000.00000.00000.00000"_OK,L7_C18_"N"_OK,L7_C19__OK,L7_C20_""_OK,L7_C21_""_OK,L7_C22_""_OK,L7_C23_""_OK,L7_C24_""_OK,L7_C25_""_OK,L7_C26_""_OK,L7_C27_""_OK,L7_C28_""_OK,L7_C29_""_OK,L7_C30_"FRSXME00"_OK,L7_C31_""_OK,L7_C32_""_OK,L7_C33_""_OK,L7_C34_""_OK,L7_C35_""_OK,L7_C36_""_OK,L7_C37_""_OK,L7_C38_""_OK,L7_C39_""_OK,L7_C40_""_OK,L7_C41_""_OK,L7_C42_""_OK,L7_C43_""_OK,L7_C44_""_OK,L7_C45_""_OK,L7_C46_""_OK,L7_C47_""_OK,L7_C48_""_OK,L7_C49_""_OK,L7_C50_""_OK,L7_C51_""_OK,L7_C52_""_OK,L7_C53_""_OK,L7_C54_""_OK,L7_C55_""_OK,L7_C56_""_OK,L7_C57_"ECO_SUBACCOUNT_MANAGE_16598_3097146656_20210329151227"_OK,L7_C58_""_OK,L7_C59_"3260.FR.ISIE.AUTRES.ZXIH.SALES.zip"_KO,L7_C60_""_OK,L7_C61_""_OK,L7_C62_"000013760000000001"_KO,L7_C63_""_OK,L7_C64_""_OK,L7_C65_""_OK,L7_C66_""_OK,L7_C67_""_OK,L7_C68_""_OK,L7_C69_""_OK,L7_C70_""_OK,L7_C71_""_OK,L7_C72_""_OK,L7_C73_""_OK,L7_C74_""_OK,L7_C75_""_OK,L7_C76_""_OK,L7_C77_""_OK,L7_C78_""_OK,L7_C79_""_OK,L7_C80_""_OK,L7_C81_""_OK,L7_C82_""_OK,L7_C83_""_OK,L7_C84_""_OK,L7_C85_""_OK,L7_C86_""_OK,L7_C87_""_OK,L7_C88_""_OK,L7_C89_""_OK,L7_C90_""_OK,L7_C91_""_OK,L7_C92_""_OK,L7_C93_""_OK,L7_C94_""_OK,L7_C95_""_OK,L7_C96_""_OK,L7_C97_""_OK,L7_C98_""_OK,L7_C99_""_OK,L7_C100_""
    L7_C101_""_OK,L7_C102_""
    L7_C103_""_OK,L7_C104_""
    L7_C105_""_OK,L7_C106_""
    L7_C107_""_OK,L7_C108_""
    L7_C109_""_OK,L7_C110_""
    L7_C111_""_OK,L7_C112_""
    L7_C113_""_OK,L7_C114_""
    L7_C115_""_OK,L7_C116_""
    L7_C117_"13759000000007"_KO,L7_C118_""
    L7_C119_""_OK,L7_C120_"END"
    L8_C1_"1"_KO,L8_C2_"3260"_KO,L8_C3_"CHK_CASHING_CHECK_IN_PROGRESS_20210329_3260_EUR_S"_KO,L8_C4_"04"_OK,L8_C5_""_OK,L8_C6_""_OK,L8_C7_""_OK,L8_C8_"LINE"_OK,L8_C9_"INVOICE"_OK,L8_C10_"000013759000000008"_KO,L8_C11_""_OK,L8_C12_"S"_OK,L8_C13_""_OK,L8_C14_"800.00000"_OK,L8_C15_"2021/03/29"_OK,L8_C16_"00100.381230000.00000.00000.00000.00000.00000.00000"_OK,L8_C17_"00100.261107100.00000.00000.00000.00000.00000.00000"_KO,L8_C18_"N"_OK,L8_C19__OK,L8_C20_""_OK,L8_C21_""_OK,L8_C22_""_OK,L8_C23_""_OK,L8_C24_""_OK,L8_C25_""_OK,L8_C26_""_OK,L8_C27_""_OK,L8_C28_""_OK,L8_C29_""_OK,L8_C30_"FRSXME00"_OK,L8_C31_""_OK,L8_C32_""_OK,L8_C33_""_OK,L8_C34_""_OK,L8_C35_""_OK,L8_C36_""_OK,L8_C37_""_OK,L8_C38_""_OK,L8_C39_""_OK,L8_C40_""_OK,L8_C41_""_OK,L8_C42_""_OK,L8_C43_""_OK,L8_C44_""_OK,L8_C45_""_OK,L8_C46_""_OK,L8_C47_""_OK,L8_C48_""_OK,L8_C49_""_OK,L8_C50_""_OK,L8_C51_""_OK,L8_C52_""_OK,L8_C53_""_OK,L8_C54_""_OK,L8_C55_""_OK,L8_C56_""_OK,L8_C57_"ECO_SUBACCOUNT_MANAGE_16598_3097146656_20210329151227"_OK,L8_C58_""_OK,L8_C59_"3260.FR.ISIE.AUTRES.ZXIH.SALES.zip"_KO,L8_C60_""_OK,L8_C61_""_OK,L8_C62_"000013760000000001"_KO,L8_C63_""_OK,L8_C64_""_OK,L8_C65_""_OK,L8_C66_""_OK,L8_C67_""_OK,L8_C68_""_OK,L8_C69_""_OK,L8_C70_""_OK,L8_C71_""_OK,L8_C72_""_OK,L8_C73_""_OK,L8_C74_""_OK,L8_C75_""_OK,L8_C76_""_OK,L8_C77_""_OK,L8_C78_""_OK,L8_C79_""_OK,L8_C80_""_OK,L8_C81_""_OK,L8_C82_""_OK,L8_C83_""_OK,L8_C84_""_OK,L8_C85_""_OK,L8_C86_""_OK,L8_C87_""_OK,L8_C88_""_OK,L8_C89_""_OK,L8_C90_""_OK,L8_C91_""_OK,L8_C92_""_OK,L8_C93_""_OK,L8_C94_""_OK,L8_C95_""_OK,L8_C96_""_OK,L8_C97_""_OK,L8_C98_""_OK,L8_C99_""_OK,L8_C100_""
    L8_C101_""_OK,L8_C102_""
    Mon pattern actuel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String spattern = "L((?!0)\\d{1,4})_C(\\d{1,4})_\\W.*?L\\1_C\\d{3}_\".*?\"(?:,|\$?)";//Pattern de Uther (// va jusqu'à L120 mais omet {L1,L2,L3,L4} idem {L11,L12,L13,L14} etc.. + pas de C101, C102 etc... par ligne)

  8. #8
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par JavaGuava Voir le message
    Oui, j'ai testé le ,|\$? en fait car si je fais juste ,|$? ca me met rouge au niveau du pipe.
    Je suis à peu près sûr d'avoir dit ,|$ et non pas ,|\$? ni ,|$? .

    Citation Envoyé par JavaGuava Voir le message
    Oui actuellement mon ArrayList al3 (en provenance de mon fichier CSV) ressemble à cela :
    Ne nous dis pas à quoi il ressemble. Dis-nous comment il est, au moins au début, à la fin, et sur les points qui concernent ton objectif.

    Citation Envoyé par JavaGuava Voir le message
    L'objectif est d'obtenir ligne par ligne dans ma console :
    .......

    Ton CSV commence par L101_C1_"titi"_OkoukO

    Ton objectif commence par L5_C1_"1"_KO

    Comment on passe de l'un à l'autre ? D'où vient ce L5_C1_"1"_KO ? Il n'est pas dans le CSV, j'ai vérifié.

    Citation Envoyé par JavaGuava Voir le message
    Mon pattern actuel :
    'Faudra rappeler le code Java utilisé, aussi. Un pattern ça ne produit rien, ça vérifie des trucs.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2022
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Juin 2022
    Messages : 43
    Points : 24
    Points
    24
    Par défaut
    Le voici :
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
     
    import static com.kms.katalon.core.checkpoint.CheckpointFactory.findCheckpoint
    import static com.kms.katalon.core.testcase.TestCaseFactory.findTestCase
    import static com.kms.katalon.core.testdata.TestDataFactory.findTestData
    import static com.kms.katalon.core.testobject.ObjectRepository.findTestObject
    import static com.kms.katalon.core.testobject.ObjectRepository.findWindowsObject
    import com.kms.katalon.core.checkpoint.Checkpoint as Checkpoint
    import com.kms.katalon.core.cucumber.keyword.CucumberBuiltinKeywords as CucumberKW
    import com.kms.katalon.core.mobile.keyword.MobileBuiltInKeywords as Mobile
    import com.kms.katalon.core.model.FailureHandling as FailureHandling
    import com.kms.katalon.core.testcase.TestCase as TestCase
    import com.kms.katalon.core.testdata.TestData as TestData
    import com.kms.katalon.core.testng.keyword.TestNGBuiltinKeywords as TestNGKW
    import com.kms.katalon.core.testobject.TestObject as TestObject
    import com.kms.katalon.core.webservice.keyword.WSBuiltInKeywords as WS
    import com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords as WebUI
    import com.kms.katalon.core.windows.keyword.WindowsBuiltinKeywords as Windows
    import internal.GlobalVariable as GlobalVariable
    import org.openqa.selenium.Keys as Keys
    //Manip Fichier
    import java.io.*;
    import java.util.ArrayList;
    //REGEX
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    //Apache POI -> sortie Excel
    import org.apache.poi.ss.usermodel.Cell;
    import org.apache.poi.ss.usermodel.CellStyle;
    import org.apache.poi.ss.usermodel.FillPatternType;
    import org.apache.poi.ss.usermodel.IndexedColors;
    import org.apache.poi.ss.usermodel.Row;
    import org.apache.poi.ss.usermodel.Sheet;
    import org.apache.poi.ss.usermodel.Workbook;
    import org.apache.poi.xssf.usermodel.XSSFWorkbook;
     
    //Variables
    String path = "C:\\Users\\srichard\\Desktop\\Nickel\\Nico\\Fichiers\\";
    String filea = "11299.FR.ISIE.AUTRES.ZXIH.SALES.csv"; //[N_Unique ISIE].[CodePays].[Type SI].[Type Flux].[ZXIH?].[Fonctionnalité].csv
    String fileb = "3260.FR.ISIE.AUTRES.ZXIH.SALES.csv";
    String filec = "Z-Nefertiti_ResultCSV_filea-b.csv";
    String filed = "Z-Nefertiti_ResultExcel_filea-b.xlsx";
    int numLigneA, numLigneB, i,j,k,m;
    boolean trouvee = false;
     
    //println("0 ----- Découpage Nom 1er Fichier")
    String[] tabnomFichierspliteA = filea.split("\\.", -1);
    //for (int i=0; i<split.length; i++)
    	//System.out.println(split[i]);
    //System.out.println("Done");
     
    //println("0 ----- Découpage Nom 2ème Fichier")
    String[] tabnomFichierspliteB = fileb.split("\\.", -1);
    String result;
    for (i=0; i<tabnomFichierspliteB.length; i++) {
    	if(tabnomFichierspliteB[i] != tabnomFichierspliteA[i]) {
    		System.out.println();
    		trouvee = true;
    		result = "1 ----- Différence dans le nom du 2ème fichier: "+tabnomFichierspliteB[i]+" au lieu de "+tabnomFichierspliteA[i];
    	}
    }
    if (trouvee == false) {
    	System.out.println("1 ----- Pas de Différence dans les noms de fichier = Pas de différence");
    	result = "1 ----- Pas de Différence dans les noms de fichier = Pas de différence";
    }
     
    ArrayList al1 = new ArrayList();
    ArrayList al2 = new ArrayList();
    ArrayList al3 = new ArrayList();
    BufferedReader BRFile1 = new BufferedReader(new FileReader(path+filea));
    String dataRow1 = BRFile1.readLine();
    BufferedReader BRFile2 = new BufferedReader(new FileReader(path+fileb));
     
    numLigneA = 0;
    i=1;// pour récupérer la ligne
    j=1;// pour récupérer le n° de colonne de l'occurence
    //println("------------------------------------------------------------------ FILE B : DEBUT 1er Traitement ------------------------------------------------------------------");
    while (dataRow1 != null){
    	//println("While Loop ="+i)
    	String[] dataArray1 = dataRow1.split(",");
    	for (String item1 : dataArray1){
    		//println("For Loop = "+j)
    		//println("item "+j+": "+item1);
    		al1.add("L"+i+"_"+"C"+j+"_"+item1);
    		j++;
    	}
    	dataRow1 = BRFile1.readLine(); //Read next line of data.
    	i++;
    	numLigneA = i-1;
    	j=1;//Remise à 0
    }
    println("2 ----- NB ligne 1er fichier: ("+filea+") "+numLigneA);
    BRFile1.close();
    //println("------------------------------------------------------------------ FILE B : FIN 1er Traitement ------------------------------------------------------------------");
     
    String dataRow2 = BRFile2.readLine();
    i = 1;
    j = 1;
    numLigneB = 0;
    //println("------------------------------------------------------------------ FILE A : DEBUT 1er Traitement ------------------------------------------------------------------");
    while (dataRow2 != null){
    	//println("While Loop ="+i)
    	String[] dataArray2 = dataRow2.split(",");
    	for (String item2 : dataArray2){
    		//println("item "+j+": "+item2);
    		al2.add("L"+i+"_"+"C"+j+"_"+item2);
    		j++;
    	}
    	dataRow2 = BRFile2.readLine(); //Read next line of data.
    	i++;
    	numLigneB = i-1;
    	j=1;//Remise à 0
    }
    println("2 ----- NB ligne 2eme fichier: ("+fileb+") "+numLigneB);
    BRFile2.close();
    //println("------------------------------------------------------------------ FILE A : FIN 1er Traitement ------------------------------------------------------------------");
     
    //k = 0; // pour récupérer le n° de colonne de l'occurence supprimée
    //println("------------------------------------------------------------------ REMOVE DEB ------------------------------------------------------------------");
    /*for (String bs:al2){
    	//println("k= "+k+"_"+"bs= "+bs);
    	al1.remove(bs);
    	//k++;
    }*/
    //Comparer et stocker les résultats dans al3
    for(i=0;i< al1.size();i++){
     if(al1.get(i) == al2.get(i))
      al3.add(al2.get(i)+"_OK");
     else
      al3.add(al2.get(i)+"_KO");
      //println("KO_"+al2.get(i))
    }
     
    //println("------------------------------------------------------------------ REMOVE FIN ------------------------------------------------------------------");
    //System.out.println(size);
     
    //println("------------------------------------------------------------------ DEB DERNIER TRAITEMENT (écriture dans le fichier de sortie) ------------------------------------------------------------------");
    //println("")
    //println("al1: "+al1) // va jusqu'à 10 ici
    for(String elem: al3){
    	System.out.print (elem);
    }
     
    //println("")
    String sdonnees = String.join(",",al3);//al1 fonctionne mais pas al3
    String spattern = "L((?!0)\\d{1,4})_C(\\d{1,4})_\\W.*?L\\1_C\\d{3}_\".*?\"(?:,?\$?)";//Pattern de Uther (// va jusqu'à L120 mais omet {L1,L2,L3,L4} idem {L11,L12,L13,L14} etc.. + pas de C101, C102 etc... par ligne)
    Pattern p = Pattern.compile(spattern);
    Matcher match = p.matcher(sdonnees);
    Boolean found = false;
     
    try{
    	OutputStream fileOut = new FileOutputStream(path+filed);
    	Workbook wb = new XSSFWorkbook();
    	Sheet sheet = wb.createSheet("Comparaison ISIE");
    	//écrire à la ligne 1
    	Row row = sheet.createRow(0);//écrire à la ligne 1
    	Cell cell = row.createCell(0);//écrire à la Colonne 1
    	cell.setCellValue(result);
    	//écrire à la ligne 2
    	row = sheet.createRow(1);
    	cell = row.createCell(0);//écrire à la Colonne 1
    	cell.setCellValue("2 ----- NB ligne 1er fichier: ("+filea+") "+numLigneA);
    	//écrire à la ligne 3
    	row = sheet.createRow(2);
    	cell = row.createCell(0);//écrire à la Colonne 1
    	cell.setCellValue("3 ----- NB ligne 2eme fichier: ("+fileb+") "+numLigneB);
    	//écrire à la ligne 4
    	row = sheet.createRow(3);
    	cell = row.createCell(0);//écrire à la Colonne 1
    	cell.setCellValue("4 ----- Ecarts constatés : ");
    	int count=4;
    	while(match.find()){
    		//écrire à partir de la ligne 5
    		row = sheet.createRow(count);
    		cell = row.createCell(0);//écrire à la Colonne 1
    		//cell.setCellValue(sdonnees.substring(match.start(),match.end()));
    		//println("start(): "+match.start());
    		//println("end(): "+match.end());
    		println(sdonnees.substring(match.start(),match.end()));
    		count++;
    		found = true;
    	}
    	if(!found){
    		//écrire à la ligne 6
    		row = sheet.createRow(5);
    		cell = row.createCell(1);//écrire à la Colonne 2
    		cell.setCellValue("Aucune correspondance trouvée.");
    		System.out.println("Aucune correspondance trouvée.")
    	}
    	wb.write(fileOut);
    }catch(Exception e) {
    	System.out.println(e.getMessage());
    }
    Je suis à peu près sûr d'avoir dit ,|$ et non pas ,|\$? ni ,|$? .
    J'ai tester cela ,|$ et cela fait mouliné Katalon (obligé de stopper manuellement).

    Ton CSV commence par L101_C1_"titi"_OkoukO

    Ton objectif commence par L5_C1_"1"_KO

    Comment on passe de l'un à l'autre ? D'où vient ce L5_C1_"1"_KO ? Il n'est pas dans le CSV, j'ai vérifié.
    Non il commence par L1_C1 mais je ne sais pas pourquoi il me fait toujours commencer par L5_C1 avec ce pattern.
    Voici un exemple de mon fichier CSV :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    "0","3260","CHK_CASHING_CHECK_CREDITED_20210329_3260_EUR_S","","ZX","ZX_TRANSACTION","","SALES_JOURNAL","","FR1_LE","FR","2021/03/31","","","","2021/03/29","EUR","2021/03/29","","EU0_LOCAL","0.00000","81149916172","","","","","","","","","","","","","","","","","","","","","END"
    "0","3260","CHK_CASHING_CHECK_IN_PROGRESS_20210329_3260_EUR_S","","ZX","ZX_TRANSACTION","","SALES_JOURNAL","","FR1_LE","FR","2021/03/31","","","","2021/03/29","EUR","2021/03/29","","EU0_LOCAL","0.00000","81149916172","","","","","","","","","","","","","","","","","","","","","END"
    "0","3260","FRAUD_REGUL_LOSS_20210329_3260_EUR_S","","ZX","ZX_TRANSACTION","","SALES_JOURNAL","","FR1_LE","FR","2021/03/31","","","","2021/03/29","EUR","2021/03/29","","EU0_LOCAL","0.00000","81149916172","","","","","","","","","","","","","","","","","","","","","END"
    "0","3260","SEIZURE_SEIZURE_20210329_3260_EUR_S","","ZX","ZX_TRANSACTION","","SALES_JOURNAL","","FR1_LE","FR","2021/03/31","","","","2021/03/29","EUR","2021/03/29","","EU0_LOCAL","0.00000","81149916172","","","","","","","","","","","","","","","","","","","","","END"
    "1","3260","CHK_CASHING_CHECK_CREDITED_20210329_3260_EUR_S","01","","","","LINE","INVOICE","000013759000000005","","S","","200.00000","2021/03/29","00100.261107100.00000.00000.00000.00000.00000.00000","00100.251110000.00000.00000.00000.00000.00000.00000","N",,"","","","","","","","","","","FRSXME00","","","","","","","","","","","","","","","","","","","","","","","","","","","ECO_SUBACCOUNT_MANAGE_16598_3097146656_20210329151227","","3260.FR.ISIE.AUTRES.ZXIH.SALES.zip","","","000013760000000001","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","13759000000005","","","END"
     
    etc...
    C'est moi qui rajoute dans l'ArrayList1 et L'arrayList2 les balises Lignes colonnes (LXXX_CXXX_"enregistrement x")
    Les 2 fichiers comportent exactement le même nombre de lignes + colonnes, donc y'n aura pas un qui a 50 et l'autres 51 (c pas possible).
    Donc on a pas a se soucier de cela.

    Le résultat que je dois produire c'est d'afficher chaque valeur identique et non identique des 2 fichiers Excels ligne par ligne avec en rouge chaque valeur non identique.

  10. #10
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    .... Mais... à quoi servent les regex pour faire ça ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  11. #11
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2022
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Juin 2022
    Messages : 43
    Points : 24
    Points
    24
    Par défaut
    Je n'ai pas trouvé d'autres solutions...en avez-vous une ?

  12. #12
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    De solution à quoi ?

    Le problème semble être de comparer chaque cellule de deux matrices. Comparer deux Strings pour savoir si elles sont identiques, cela se fait avec la méthode equals() de la classe String.

    Mais le plus gros problème de ce code semble être d'utiliser des listes unidimensionnelles pour stocker des matrices, et d'ajouter des LX_CX aux strings pour chercher à identifier leur position, au lieu de compter sur des matrices pour le faire.

    Ensuite il y a emploi de regex uniquement dans le but d'essayer de reséparer les lignes qu'il n'y avait jamais eu aucune raison de rassembler.

    Je dis pas que c'est infaisable comme ça, mais ça sert à quoi ? Une matrice 1, une matrice 2, pour chaque ligne on affiche son résultat en affichant le résultat de chaque cellule de cette ligne, voilà, fini. Simple.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  13. #13
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2022
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Juin 2022
    Messages : 43
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par thelvin Voir le message
    De solution à quoi ?

    Le problème semble être de comparer chaque cellule de deux matrices. Comparer deux Strings pour savoir si elles sont identiques, cela se fait avec la méthode equals() de la classe String.

    Mais le plus gros problème de ce code semble être d'utiliser des listes unidimensionnelles pour stocker des matrices, et d'ajouter des LX_CX aux strings pour chercher à identifier leur position, au lieu de compter sur des matrices pour le faire.

    Ensuite il y a emploi de regex uniquement dans le but d'essayer de reséparer les lignes qu'il n'y avait jamais eu aucune raison de rassembler.

    Je dis pas que c'est infaisable comme ça, mais ça sert à quoi ? Une matrice 1, une matrice 2, pour chaque ligne on affiche son résultat en affichant le résultat de chaque cellule de cette ligne, voilà, fini. Simple.
    1. C'est quoi des matrices en java ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Ensuite il y a emploi de regex uniquement dans le but d'essayer de reséparer les lignes qu'il n'y avait jamais eu aucune raison de rassembler.
    2. Dsl, c'est la seule solution simple que j'ai trouvé et j'ai choisi de le faire avec des Tableaux dynamiques.

    Je dis pas que c'est infaisable comme ça, mais ça sert à quoi ? Une matrice 1, une matrice 2, pour chaque ligne on affiche son résultat en affichant le résultat de chaque cellule de cette ligne, voilà, fini. Simple.
    3. C'est ce que WinMerge Fait et que j'aimerai reproduire sur des fichiers quotidiens qui permettent au BA de lancer le TestCase via les 2 fichiers à comparer.
    Et puis c'est ce que l'on m'a dit de faire, c'est pas moi qui décide.

  14. #14
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    En Java comme ailleurs, les matrices ce sont des tableaux 2D.

    Au pire tu peux faire des listes de listes.

    Ma question c'était pourquoi faire tout ce tintouin au lieu de simplement comparer les cellules de deux matrices.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  15. #15
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2022
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Juin 2022
    Messages : 43
    Points : 24
    Points
    24
    Par défaut
    Ben, j'ai trouver beaucoup de tuto concernant les ArrayList à vrai dire.
    Faire des Listes de Listes , j'en ai vu aucun.

    Si tu as un début de code ou une ébauche de comment faire pour comparer les 2 fichiers tout en garder les OK et KO, je veux bien

  16. #16
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    C'est à dire que je vois pas trop le besoin d'un tuto spécifique. Une liste ça contient ce qu'on veut. Si donc on a des listes, on peut faire une liste qui contient ces listes.

    Le code pourrait ressembler à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public static List<List<String>> readSuperSimpleCSV(Path path) throws IOException {
      return Files
        .readAllLines(path)
        .stream()
        .map(line -> line.split(",", -1))
        .map(Arrays::asList)
        .collect(Collectors.toList());
    }
    C'est sûr que ça marche pas sur n'importe quel CSV, mais ça fait la même approche ligne-par-ligne et champs séparés par des virgules, que ton code.

    Là j'ai vraiment dit à Java de pratiquement tout faire à ma place.

    Et ça pourrait s'utiliser comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    List<List<String>> matrice1 = readSuperSimpleCSV(Paths.get("file1.csv"));
    System.out.println(matrice1);
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  17. #17
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2022
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Juin 2022
    Messages : 43
    Points : 24
    Points
    24
    Par défaut
    C'est 2 fichiers qu'il faut comparer entre eux pas 1 seul

  18. #18
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Eh bien tu fais une autre matrice pour le 2e fichier, en rappelant la même méthode.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  19. #19
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2022
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Juin 2022
    Messages : 43
    Points : 24
    Points
    24
    Par défaut
    J'ai une erreur rouge dans cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    .map(line -> line.split(",", -1))
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    expecting ')', found '->' @ line 24, column 14.

    idem pour cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    expecting ')', found ':' @ line 25, column 16.

  20. #20
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Ça c'est le signe que tu utilises du Java très très très obsolète. Attention à ne jamais rien connecter que tu codes avec, à Internet. Et ça serait bien de mentionner quand tu utilises des outils du passé.

    On peut quand même faire la même chose, mais c'est un peu plus compliqué :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public static List<List<String>> readSuperSimpleCSV(File file) throws IOException {
      try(Reader fr = new FileReader(file); BufferedReader reader = new BufferedReader(fr)) {
        List<List<String>> lines = new ArrayList<>();
        for(String line = reader.readLine(); line != null; line = reader.readLine()) {
          List<String> fields = Arrays.asList(line.split(",", -1));
          lines.add(fields);
        }
        return lines;
      }
    }
    et ensuite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    List<List<String>> matrice1 = readSuperSimpleCSV(new File("file1.csv"));
    System.out.println(matrice1);
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Comprendre une RegEx
    Par wmenant dans le forum VB.NET
    Réponses: 5
    Dernier message: 15/05/2011, 21h47
  2. [RegEx] php et javascript dans une regex
    Par grochenel dans le forum Langage
    Réponses: 7
    Dernier message: 06/12/2005, 22h21
  3. [RegEx] spliter par rapport a une regex en récuperant la regex
    Par Khrysby dans le forum Langage
    Réponses: 1
    Dernier message: 10/11/2005, 15h08
  4. [débutant] [JTree] Comprendre une sélection
    Par calogerogigante dans le forum Composants
    Réponses: 4
    Dernier message: 26/10/2005, 15h34
  5. [langage] comprendre une syntaxe particulière
    Par mat21 dans le forum Langage
    Réponses: 4
    Dernier message: 08/12/2004, 18h12

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