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

VBA Access Discussion :

[REGEX] Extraction d'une chaine


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut [REGEX] Extraction d'une chaine
    Bonjour,


    je suis à la recherche d'un connaisseur du Regex.

    Après avoir lu le super tutorial de Caféine, je n'arrive malheureusement pas à l'appliquer à mon cas.

    Dans une table, j'ai des champs qui sont une chaine de caractère, mais qui ont des fois des nombres.

    Par exemple, "toto 123" ou "123 totarite" ou "45897 - carotte"

    Comme vous pouvez le constater :
    - ces champs n'ont pas de longueur précise
    - le nombre est aléatoire, tout comme la longueur du texte


    Je voudrais, grâce à un regex, ne récupérer que la partie texte.
    Ici, "toto", "totarite" ou "carotte".

    Avec les explications de Caféine, j'ai essayé d'écrire ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    reg.Pattern = "[0-9]"
    MsgBox reg.Replace("123 totarite", "")
    (pour faire des tests).

    Malheureusement, le résultat n'est pas ce que je souhaite (il me donne "23 totarite") : il m'a juste enlevé le premier champ.

    Je pensais q'un regex cherchait sur la totalité de la chaine de caractères, et remplaçait tous les caractères correspondant au Pattern, mais à priori, c'est pas le cas

    Je pense qu'il faudrait que je boucle sur la chaine de caractères d'entrée, mais je ne sais pas comment m'y prendre

    Quelqu'un pourrait-il m'aiguiller vers la solution ?

    Je vais continuer à fouiller de mon côté

    En vous remerciant par avance
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  2. #2
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut
    J'ai trouvé comment supprimer les chiffres :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    reg.Pattern = "\d+"
    MsgBox reg.Replace("123 totarite", "")
    Le problème :
    - il me reste l'espace
    - si le lance mon programme sur ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    reg.Pattern = "\d+"
    MsgBox reg.Replace("45897 - carotte", "")
    Il va me donner comme résultat : "- carotte" => Il reste l'espace et le tiret.

    Quelqu'un aurait une idée ?
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  3. #3
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut
    J'ai trouvé mais j'ai encore un souci.

    Je vous montre d'abord la solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim Txt As String
    reg.Pattern = "[a-z,A-Z]+"
    Set a = reg.Execute("123 totarite")
    If a.Count > 0 Then
    Txt = a(0)
    Else
    Txt = ""
    End If
    MsgBox Txt
    Ce que j'aie n fait oublier de dire, c'est qu'il est aussi possible d'avoir une chaine de caractère séparé par un espace. A ce moment-là, ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim Txt As String
    reg.Pattern = "[a-z,A-Z]+"
    Set a = reg.Execute("123 la totalité")
    If a.Count > 0 Then
    Txt = a(0)
    Else
    Txt = ""
    End If
    MsgBox Txt
    Me sort juste le mot "la". J'ai essayé de mettre "txt = a(0) & a(1)", mais ça me sort une erreur.

    Une idée ?
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  4. #4
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Par défaut
    Bonjour,

    Vois si la pièce jointe peut t'aider.

    N.B. Tu peux la lire avec Word.
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. [RegEx] Regex d'extraction d'une chaine à partir d'un chemin de fichier
    Par cryosore dans le forum Langage
    Réponses: 1
    Dernier message: 07/03/2010, 20h47
  2. Réponses: 3
    Dernier message: 25/04/2006, 23h07
  3. [Regex] Remplacement d'une chaîne avec $
    Par TSnarfK dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 27/01/2006, 10h44
  4. extraction d'une chaine de caractere ...
    Par nicolasghaz dans le forum VBScript
    Réponses: 7
    Dernier message: 31/10/2005, 18h53
  5. Extraction d'une chaine de caractères
    Par megane dans le forum Langage
    Réponses: 2
    Dernier message: 05/01/2004, 14h52

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