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

VB.NET Discussion :

Regex en VB.net [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2006
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2006
    Messages : 108
    Par défaut Regex en VB.net
    Bonjour,

    Je fais actuellement une application où j'ai besoin de faire des recherches dans des fichiers.
    Pour cela je me sers des expressions régulières, mais malgré plusieurs heures de recherches et de lecture je me trouve face à un problème.

    Je cherche à récupérer l'information se situant à la suite de "# Carte "

    J'ai donc écrit cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim myRegex = New Regex("^(# Carte [a-zA-Z]+)")
    Cela me donne # Carte avec la suite que je souhaite.

    Je pense qu'il est possible de faire la recherche et d'extraire ce que je souhaite récupérer.

    Donc j'aurais besoin de conseils, d'avis, de corrections afin de pouvoir réaliser cela.

    J'ai déjà essayé plusieurs choses mais sans grand succès.

    Ci dessous le code général :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Do
     
                Dim Text As String = Text_carte.ReadLine()
     
                Dim myRegex = New Regex("^(# Carte [a-zA-Z]+)")
     
                Dim res = myRegex.IsMatch(Text)
     
                Dim r = myRegex.Match(Text).Value
     
                'myRegex.Match(Text)
           Loop Until Text Is Nothing
    Nota : Je suis novice dans les expressions régulière.
    Pour réaliser le code regex ci dessus j'ai mis à peu près 4h à 5h. (Donc super novice).

    Merci d'avance pour votre aide.

  2. #2
    Membre Expert
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Billets dans le blog
    7
    Par défaut
    Bonsoir ,

    Il faut travailler avec les groupes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      Dim s = "ABCDEF# Carte GHIJKLM"
      Dim rx = New Regex("# Carte(.+)$")
      MsgBox(rx.Match(l).Groups(1).Value)
    Affiche :

    A+

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2006
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2006
    Messages : 108
    Par défaut Suite #1
    Merci wallace1,

    Je fais le test au plus vite et je vous tiens au courant.

    Cordialement.

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    700
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 700
    Par défaut
    Bonsoir,
    il est possible, aussi, de faire une post-analyse positive.
    Voir ce tuto plus qu'excellent.
    La recherche devrait ressembler à cela ( poste 3.8.2):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim myRegex = New Regex("^((?<=# Carte )[a-zA-Z]+)")
    Voir aussi le poste 4.4 pour récupérer toutes les occurrences.

  5. #5
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Un outil très intéressant pour tester les expressions régulières

    http://www.ultrapico.com/Expresso.htm

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2006
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2006
    Messages : 108
    Par défaut Suite 2
    Citation Envoyé par Hybride76 Voir le message
    Merci wallace1,

    Je fais le test au plus vite et je vous tiens au courant.

    Cordialement.
    Suite à la modification de mon code tel que proposé par wallace1.
    J'arrive a réaliser ce que je recherche.

    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
     
     
     
            While (ligne <= nLignes)
     
                Dim Text = Text_carte.ReadLine()
                Dim myRegex = New Regex("# Carte (.+)$")
                Dim res = myRegex.IsMatch(Text)
                Type_Carte = myRegex.Match(Text).Groups(1).Value
                If (res = True) Then
                    ToolStripComboBox1.Items.Add(Type_Carte)
                End If
                ligne = ligne + 1
     
            End While
    Encore merci.

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

Discussions similaires

  1. regex + match vb.net
    Par jalalnet dans le forum VB.NET
    Réponses: 4
    Dernier message: 06/05/2012, 17h34
  2. Validation d'une chaine par Regex sous vb.net
    Par Lamanne dans le forum VB.NET
    Réponses: 10
    Dernier message: 27/03/2012, 07h58
  3. Performance des Regex en .NET
    Par Eric80 dans le forum Framework .NET
    Réponses: 10
    Dernier message: 07/07/2010, 14h55
  4. [VB.Net 2.0] - Regex chercher un mot entre deux ?
    Par troxsa dans le forum Framework .NET
    Réponses: 8
    Dernier message: 20/02/2007, 22h04
  5. Réponses: 5
    Dernier message: 10/07/2006, 15h02

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