« Macros-commandes VBA/Devenez un expert » : différence entre les versions
Contenu supprimé Contenu ajouté
maintenance |
m 7 révisions importées depuis b:Programmation VBA/Regex |
||
Ligne 1 :
{{VBA}}
Nécessite de cocher "Microsoft VBScript Regular Expressions 5.5" dans "Outils\Références".
== Syntaxe ==
{{regex}}
*.Test() : renvoie vrai si le pattern est trouvé dans la chaine.
*.Execute() : renvoie toutes les positions du pattern dans un tableau.
*.Replace() : remplace le pattern par le paramètre deux.
== Recherche ==
Obtenir les emplacements dans une chaine :
<source lang=vb>
Sub RegexRecherche()
Dim RegEx As RegExp
Set RegEx = New RegExp
Dim matches As IMatchCollection2
Dim match As Variant
With RegEx
.IgnoreCase = True
.Global = True 'True matches all occurances, False matches the first occurance
.Pattern = "[0-9]+"
Set matches = .Execute("1 test 2 regex")
End With
For Each match In matches
MsgBox ("Position : " & match.FirstIndex)
Next
' ou
MsgBox matches.Item(0).Value
End Sub
</source>
Extraire un mot inconnu qui en précède un autre :
<source lang=vb>
Public Sub RegexExtraction()
Dim RegEx As RegExp
Set RegEx = New RegExp
With RegEx
.IgnoreCase = True
.Global = False
.Pattern = "[a-z]* Wikibooks"
End With
chaine$ = "Test regex VB pour Wikibooks francophone."
Set matches = RegEx.Execute(chaine$)
MsgBox (Replace(matches(0).Value, " Wikibooks", ""))
' Affiche : "pour"
End Sub
</source>
== Remplacement ==
Supprimer toutes les balises HTML :
<source lang=vb>
Public Sub RegexChaine()
Dim RegEx As RegExp
Set RegEx = New RegExp
With RegEx
.IgnoreCase = True
.Global = False
.Pattern = "<.*>(.*)<.*>"
End With
chaine$ = "Test regex VB pour <balise1>Wikibooks</balise1> francophone."
chaine$ = RegEx.Replace(chaine$, "$1")
MsgBox (chaine$)
' Affiche : "Test regex VB pour Wikibooks francophone." (sans les balises)
End Sub
</source>
== Références ==
*http://www.regular-expressions.info/anchors.html
|