Partager via


Dépannage des expressions régulières en Visual Basic

Cette rubrique présente des problèmes courants qui peuvent se produire lorsque vous utilisez des expressions régulières, fournit des conseils pour résoudre ces problèmes et indique une procédure pour accéder aux chaînes capturées.

Incompatibilité avec le modèle prévu

Vous trouverez ci-dessous des tâches courantes que vous pouvez exécuter avec les expressions régulières, ainsi que des conseils de dépannage si vous n'obtenez pas les résultats escomptés :

  • Validation de chaînes. Une expression régulière de validation de chaîne doit commencer par le caractère ^. Il indique au moteur de l'expression régulière de commencer la mise en correspondance du modèle spécifié au début de la chaîne. Pour plus d'informations, consultez Construction d'une fonction de validation en Visual Basic. et Ancres dans les expressions régulières.

  • Mise en correspondance avec des quantificateurs. Les quantificateurs d'expression régulière (*, +, ?, {}) sont gourmands, c'est-à-dire qu'ils établissent une correspondance avec la chaîne la plus longue possible. Toutefois, pour certains modèles, vous pouvez utiliser une correspondance paresseuse pour obtenir la chaîne la plus courte possible. Les quantificateurs d'expression régulière paresseux sont *?, +?, ?? et {}?. Pour plus d'informations, consultez Quantificateurs.

  • Mise en correspondance avec des quantificateurs imbriqués. Lorsque vous utilisez des quantificateurs imbriqués, vérifiez que tous les quantificateurs sont soit gourmands soit paresseux. Sinon, la mise en correspondance peut produire des résultats inattendus.

Accès aux chaînes capturées

Une fois qu'une expression régulière a détecté vos chaînes prévues, vous pouvez capturer ces chaînes et accéder au contenu capturé. Vous pouvez utiliser des constructions de regroupement pour capturer les chaînes qui correspondent à des groupes de sous-expressions dans votre expression régulière. Pour plus d'informations, consultez Constructions de regroupement.

Plusieurs étapes permettent d'accéder aux chaînes capturées avec des groupes imbriqués.

Pour accéder à un texte capturé

  1. Créez un objet Regex pour une expression régulière.

  2. Appelez la méthode Match pour obtenir l'objet Match.

    L'objet Match contient des informations sur la correspondance de l'expression régulière avec la chaîne.

  3. Itérez sur les objets Group contenus dans la collection Groups de l'objet Match.

    L'objet Group contient des informations sur les résultats d'un seul groupe de capture.

  4. Itérez sur les objets Capture contenus dans la collection Captures de chaque objet Group.

    Chaque objet Capture contient des informations sur une seule sous-expression capturée, y compris la sous-chaîne et l'emplacement correspondants.

Par exemple, le code suivant montre comment accéder aux chaînes capturées avec une expression régulière qui contient trois groupes de capture :

    ''' <summary>
    ''' Parses an e-mail address into its parts.
    ''' </summary>
    ''' <param name="emailString">E-mail address to parse.</param>
    ''' <remarks> For example, this method displays the following 
    ''' text when called with "someone@mail.contoso.com":
    ''' User name: someone
    ''' Address part: mail
    ''' Address part: contoso
    ''' Address part: com
    ''' </remarks>
    Sub ParseEmailAddress(ByVal emailString As String)
        Dim emailRegEx As New Regex("(\S+)@([^\.\s]+)(?:\.([^\.\s]+))+")
        Dim m As Match = emailRegEx.Match(emailString)
        If m.Success Then
            Dim output As String = ""
            output &= "User name: " & m.Groups(1).Value & vbCrLf
            For i As Integer = 2 To m.Groups.Count - 1
                Dim g As Group = m.Groups(i)
                For Each c As Capture In g.Captures
                    output &= "Address part: " & c.Value & vbCrLf
                Next
            Next
            MsgBox(output)
        Else
            MsgBox("The e-mail address cannot be parsed.")
        End If
    End Sub

Voir aussi

Tâches

Dépannage des chaînes en Visual Basic

Concepts

Construction d'une fonction de validation en Visual Basic