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

  1. #1
    Membre habitué
    Extraire une plaque d'immatriculation dans une phrase : Talend
    Bonjour,

    Je viens à vos lumières.
    Quelqu'un as t il déjà extrait une plaque d'immatriculation dans une phrase.
    Je souhaite d'une certaines manières détectés les plaques d'immatriculation ancienne et nouvelle version dans une phrase.
    Exemple :
    id date retour
    1234 12/11/2020 Je cherche la plaque d'immat AA-123-BB ou alors celle ci 12ABC34.

    L'objectif est d'extraire uniquement AA-123-BB et/ou 12ABC34. Ou alors via un flag si on trouve la plaque je met 1 . Mais ça reviendrais au même.

    Via le composant tExtractRegexFields avec le regex ci-contre : "^[A-Za-z]{1,2}-[0-9]{1,3}-[A-Za-z]{1,2}$" , j'arrive à détectés mais si et seulement si il y à uniquement la plaque d'immatriculation dans le champs dès qu'il y à d'autre texte ça marche pas.

    Ne parlant pas de la fonction contains car celle-ci ne prend pas les regex uniquement un string.

    Merci pour la lecture et vos retours.

  2. #2
    Membre à l'essai
    J'ai testé ta regex ici : https://www.freeformatter.com/java-r...ex-tester.html et j'ai l'impression qu'elle est tout simplement fausse !

  3. #3
    Membre habitué
    Comme tu as mis dans ton message c'est une "impression".
    Car Dans mon job elle fonctionne avec le composant dont j'ai évoqué à savoir : tExtractRegexFields.
    De plus , j'ai tester la regex dans ton lien et ci-dessous le résultats :


    Elle marche .
    Si tu connais d'autre regex qui pourrais répondre à mon soucis , je suis preneur.

    ps : Bien entendu pour la plaque 12ABC34 , il faut enlever les - dans la regex et modifier le sens des recherches : ^[0-9]{1,2}[A-Za-z]{1,3}[0-9]{1,2}$

    Merci

  4. #4
    Membre à l'essai
    Ce que je voulais dire c'est que ta regex est fausse quand ta plaque d'immatriculation se trouve avec un texte.

    Tu peux m'envoyer un fichier d'exemple concret je vais te trouver une solution

  5. #5
    Membre expérimenté
    "^[A-Za-z]{1,2}-[0-9]{1,3}-[A-Za-z]{1,2}$"
    ^ = début de ligne
    $ = fin de ligne

    ça ne peut pas fonctionner dans du texte.
    Pensez à marquer vos tickets comme résolus.
    Pensez aussi aux pour les réponses pertinantes

    Quand une discution est résolue depuis un moment pour revenir dessus, il est mieux d'en crée une nouvelle avec un lien vers l'autre car :
    • Elle sera en haut du forum, elle sera donc plus visible
    • Une discussion résolue, on ne passe pas dessus pour aider, on passe dessus si on a le même problème
    • Tu demandes surement à tes clients de faire le même

  6. #6
    Nouveau membre du Club
    Salut,
    Si ta regex doit s'appliquer à un numéro de plaque de type 12-ABC-34, tu peux tester un truc du genre :
    "[0-9]{1,2}"+"-"+[A-Za-z]{1,3}"+"-"+"[0-9]{1,2}" ou [0-9]{1,2}\-[A-Za-z]{1,3}\-[0-9]{1,2}
    2 chiffres + 3 caractères + 2 chiffres avec concaténation des tirets entre.
    "[0-9]{1,2}"+"[A-Za-z]{1,3}"+"[0-9]{1,2}" ou "[0-9]{1,2}[A-Za-z]{1,3}[0-9]{1,2}"
    Et sans les tirets s'il n'y en a pas dans ton numéro de plaque.
    [0-9]{1,2}.*[A-Za-z]{1,3}.*[0-9]{1,2}
    Si tu veux gérer les 2 cas, avec et sans tirets

  7. #7
    Membre habitué
    Citation Envoyé par supergeoffrey Voir le message
    ^ = début de ligne
    $ = fin de ligne

    ça ne peut pas fonctionner dans du texte.
    Bonjour ,
    merci mais j'ai fait en SQL à défaut .

  8. #8
    Membre habitué
    Citation Envoyé par gadje Voir le message
    Salut,
    Si ta regex doit s'appliquer à un numéro de plaque de type 12-ABC-34, tu peux tester un truc du genre :
    "[0-9]{1,2}"+"-"+[A-Za-z]{1,3}"+"-"+"[0-9]{1,2}" ou [0-9]{1,2}\-[A-Za-z]{1,3}\-[0-9]{1,2}
    2 chiffres + 3 caractères + 2 chiffres avec concaténation des tirets entre.
    "[0-9]{1,2}"+"[A-Za-z]{1,3}"+"[0-9]{1,2}" ou "[0-9]{1,2}[A-Za-z]{1,3}[0-9]{1,2}"
    Et sans les tirets s'il n'y en a pas dans ton numéro de plaque.
    [0-9]{1,2}.*[A-Za-z]{1,3}.*[0-9]{1,2}
    Si tu veux gérer les 2 cas, avec et sans tirets
    Merci je vais tester quand même , mais j'ai finalement fait en SQL.

###raw>template_hook.ano_emploi###