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

Vos Contributions VBScript Discussion :

[HTA]Manipulation de l'objet RegExp


Sujet :

Vos Contributions VBScript

  1. #1
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    décembre 2004
    Messages
    5 662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : décembre 2004
    Messages : 5 662
    Points : 14 614
    Points
    14 614
    Par défaut [HTA]Manipulation de l'objet RegExp
    Salut

    Petit programme pour faire des essais Pattern de l'objet RegExp. avec HTA ---> VBScript
    Le programme à lancer (enregistrer sous le nom EtudeRegExp.hta)
    Code HTA : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    <HTML>
            <HEAD lang="fr">
                    <title> Etude Pattern de l'objet RegExp </title>
                    <HTA:APPLICATION
                            id="EtudeRegExp"
                            applicationname="EtudeRegExp"
                            version="1"
                            SCROLL="no"
                            BorderStyle="normal"
                    >
            </HEAD>
    <SCRIPT language="VBScript" type="text/vbscript">
    '------------------------------------------------------------------------------------------------------------------
    '*** variables public ***
    Dim BarT, DblBord, DossierRacineDuProg
    '------------------------------------------------------------------------------------------------------------------
    Sub Window_Onload()
    Dim Bord
            MoveTo -Screen.availWidth,-Screen.availHeight 'place la page HTA hors de l'écran
            ResizeTo Screen.availWidth,Screen.availHeight ' Agrandi la page HTA au maximum de la grandeur disponnible du burreau
            Bord = screenLeft + Screen.availWidth ' Calcul de l'épaisseur du cadre de la fenêtre HTA
            DblBord = Bord*2
            BarT = (screenTop + Screen.availHeight) - Bord ' Calcule de l'hauteur de la barre de titre de la fenêtre HTA 
            ResizeTo 490,535 ' dimensionne la fenêtre HTA (largeur, hauteur)
            MoveTo (Screen.availWidth-490)/2,(Screen.availHeight - 535) / 2 ' Centrage de la fenêtre HTA sur le burreeau
     
            Dim ChemNomComplet
            ChemNomComplet = EtudeRegExp.CommandLine ' ChemNomComplet = Id du programme.CommandLine
            DossierRacineDuProg = Left(ChemNomComplet, (InStrRev(ChemNomComplet, "\", -1, vbTextCompare)))
            DossierRacineDuProg = Replace(DossierRacineDuProg,Chr(34),"")
    End Sub
    '----------------------------------------------------------------------------------------------------------------------
    Sub Window_OnResize()
            If document.body.offsetWidth >= 474 Then
            CartoucheHaut.Style.width = document.body.offsetWidth
                    CartoucheMil.Style.width = document.body.offsetWidth
                    TextPattern.Style.width = document.body.offsetWidth - 10
            BtAide.Style.Left = CvI(TextPattern.Style.width) - CvI(BtAide.Style.Width) + 4
                    TextSoumis.Style.Width = TextPattern.Style.Width
            TextReplace.Style.Width = TextPattern.Style.Width
            TextResult.Style.Width = TextPattern.Style.Width
            Else
                    ResizeTo 474 + DblBord, document.body.offsetHeight + DblBord + BarT
        End If
        If document.body.offsetHeight >= 497 Then
            Dim Hpage, Hcart1, Hcart2, HcatS, MiHaut
            Hpage = CvI(document.body.offsetHeight)
            Hcart1 = CvI(CartoucheHaut.Style.Height)
            Hcart2 = CvI(CartoucheMil.Style.Height)
                    HcatS = Hcart1 + Hcart2
                    MiHaut = (Hpage - HcatS)/2
                    TextSoumis.Style.Height = MiHaut
                    TextResult.Style.Height = MiHaut - 4
                    CartoucheMil.Style.Top = CvI(TextSoumis.Style.Top) + CvI(TextSoumis.Style.Height)
                    TextResult.Style.Top = CvI(CartoucheMil.Style.Top) + CvI(CartoucheMil.Style.Height)
            Else
                    ResizeTo document.body.offsetWidth + DblBord, 497 + DblBord + BarT
        End If
    End Sub
    '----------------------------------------------------------------------------------------------------------------------
    Function CvI(literal)
            Literal = Trim(literal)
            If Instr(literal,"px") Then CvI = Cint(Left(literal, Len(Literal)-2)) Else CvI = Cint(literal)
    End Function
    '----------------------------------------------------------------------------------------------------------------------
    Sub BtGoClick()
    Dim RegularExpressioN, ResulT, Match
    Dim MeStr, MsG, Cpt
     
            TextResult.innertext = "": MsG = "": Cpt = 0: MeStr = TextSoumis.Value
            Set RegularExpressioN = New RegExp 
            RegularExpressioN.Pattern = TextPattern.Value
            'distinction caract. min/MAJ ou accepte caract. min/MAJ
            If DistinminMAJ(0).CHECKED Then RegularExpressioN.IgnoreCase = False Else RegularExpressioN.IgnoreCase = True
            'prend fin à la premiére ocurence trouvée ou s'applique à la chaîne entière
            If DebFinOcur(0).CHECKED Then RegularExpressioN.Global = False Else  RegularExpressioN.Global = True
     
            If Metode(2).CHECKED Then ' méthode Test simple
                    If RegularExpressioN.Test(MeStr) = True Then
                            TextResult.innertext = "méthode test: " & vbNewLine & "au moins une correspondance trouvée"
                            Else
                            TextResult.innertext = "méthode test: " & vbNewLine & "aucune correspondance trouvée"
                    End If
                    Exit Sub
            End If
     
            If Metode(0).CHECKED Then 'méthode Execute
                    If RegularExpressioN.Test(MeStr) = True Then 'non obligatoire (précotion), méthode Test
                            Set ResulT = RegularExpressioN.Execute(MeStr)
                            For Each Match In ResulT
                                    MsG = MsG & "position: " & Match.FirstIndex & "  Longueur: " & Match.Length & " Valeur: " & Match.Value
                                    Cpt = Cpt + 1
                                    If Cpt <> 0 Then MsG = MsG & vbNewLine
                            Next
                            MsG = "Nbr.d'occurence: " & ResulT.Count & vbNewLine & MsG
                            Set Match = Nothing
                            Else
                            MsG = "Pas d'occurence"
                    End If
                    Else 'méthode Replace
                    MsG = RegularExpressioN.Replace(MeStr, TextReplace.innertext)   ' Effectue le remplacement
                    If MsG = MeStr Then MsG = "Pas d'occurence, pas de remplacement " & vbNewLine & MsG
                    Set ResulT = Nothing
            End If
            Set RegularExpressioN = Nothing
            TextResult.innertext = MsG
    End Sub
    '----------------------------------------------------------------------------------------------------------------------
    Sub GoAide()
    Dim WSH, Cmd, ChemNomHta
            ChemNomHta = chr(34) & DossierRacineDuProg & "AideEtudeRegExp.hta" & chr(34)
            Set WSH = CreateObject("WScript.Shell")
            Cmd = "Mshta.exe " & ChemNomHta
            WSH.Run Cmd, 1, true
            Set WSH= nothing
    End Sub                                                                                                                                                                                                                                                                                                                                                                                          
    '----------------------------------------------------------------------------------------------------------------------
    </SCRIPT>
     
            <body style=" background-color:#FFFFA8">
     
                    <!-- Partie Pattern --------------------------------------------------------------------- -->
                    <fieldset Name="CartoucheHaut" id="CartoucheHaut" style="border:none; position: absolute; left:0px; top:0px; height:55px; width:472px; background-color:#DDFFB3">
                            <Div id="DivPattern" style="position:absolute; left:0px; top:2px; height:13px; width:42px"> Pattern </Div>
                            <Input Type="button" id="BtAide" name="BtAide" Value="Aide rédaction Pattern" onClick="GoAide"
                                    style="position:absolute; left:4px; top:0px; height:20px; width:150px; Color:#000000; background-Color:#BBBBBF ">
                            <INPUT Type="text" id="TextPattern" name="TextPattern" value="C"
                                    style="border-style: solid; position: absolute; left:4px; top: 20px; height:19px; width:463px" >
     
                            <!-- Partie Texte soumis --------------------------------------------------------------------- -->
                            <Div id="DivTextSoumis" style="position:absolute; left:0px; top:37px; height:13px; width:100px"> Texte soumis </Div>
                    </fieldset>
                    <TEXTAREA name="TextSoumis"  Value ="" 
                            style="border-style: solid; position: absolute; left:4px; top: 55px; height:133px; width:463px"> Coucou, c'est moi, pour une petite experience </TEXTAREA>
     
                    <fieldset Name="CartoucheMil" id="CartoucheMil" style="border:none; position: absolute; left:0px; top:188px; height:170px; width:472px; background-color:#FFFFA8">
                            <!-- Partie Replace --------------------------------------------------------------------- -->
                            <Div id="DivTextReplace" style="position:absolute; left:0px; top:0px; height:13px; width:364px"> Texte de remplacement pour méthode Replace </Div>
                            <TEXTAREA name="TextReplace" Value ="" 
                                    style="border-style: solid; position: absolute; left:4px; top:19px; height:35px; width:463px">Ch</TEXTAREA>
     
                            <!-- Partie options  --------------------------------------------------------------------- -->
                            <Div id="DivDistinminMAJ" style="position:absolute; left:2px; top:55px; height:13px; width:364px"> |------------ (Valeur par défaut) -----------| </Div>
     
                            <INPUT Type="radio" id="DistinminMAJ0" name="DistinminMAJ" value="" CHECKED
                                    style="position: absolute; left:2px; top:75px; height:13px; width:13px" >
                                    <label for="DistinminMAJ0" style="position:absolute; left:17px; top:71px; height:13px; width:364px"> distinction caract. min/MAJ </label>
                            <INPUT Type="radio" id="DistinminMAJ1" name="DistinminMAJ" value=""
                                    style="position: absolute; left:280px; top:75px; height:13px; width:13px" >
                                    <label for="DistinminMAJ1" style="position:absolute; left:295px; top:71px; height:13px; width:364px"> accepte caract. min/MAJ </label>
                            <!-- --------------------------------------------------------------------- -->
                            <INPUT Type="radio" id="DebFinOcur0" name="DebFinOcur" value="" CHECKED
                                    style="position: absolute; left:2px; top:91px; height:13px; width:13px" >
                                    <label for="DebFinOcur0" style="position:absolute; left:17px; top:87px; height:13px; width:364px"> prend fin à la premiére ocurence trouvée </label>
                            <INPUT Type="radio" id="DebFinOcur1" name="DebFinOcur" value=""
                                    style="position: absolute; left:280px; top:91px; height:13px; width:13px" >
                                    <label for="DebFinOcur1" style="position:absolute; left:295px; top:87px; height:13px; width:364px"> s'applique à la chaîne entière </label>
                            <!-- Partie methodes  --------------------------------------------------------------------- -->
                            <INPUT Type="radio" id="Metode0" name="Metode" value="" CHECKED
                                    style="position: absolute; left:2px; top:122px; height:13px; width:13px; background-Color:#0031FF" >
                                    <label for="Metode0" style="position:absolute; left:17px; top:118px; height:13px; width:364px; Color:#0031FF;"> méthode Execute </label>
                            <INPUT Type="radio" id="Metode1" name="Metode" value=""
                                    style="position: absolute; left:140px; top:122px; height:13px; width:13px; background-Color:#0031FF" >
                                    <label for="Metode1" style="position:absolute; left:155px; top:118px; height:13px; width:364px; Color:#0031FF;"> méthode Replace </label>
                            <INPUT Type="radio" id="Metode2" name="Metode" value=""
                                    style="position: absolute; left:280px; top:122px; height:13px; width:13px; background-Color:#0031FF" >
                                    <label for="Metode2" style="position:absolute; left:295px; top:118px; height:13px; width:364px; Color:#0031FF;"> méthode Test </label>
     
                            <!-- Partie Go resultat  --------------------------------------------------------------------- -->
                            <Input Type="button" id="BtGo" name="BtGo" Value="Go" onClick="BtGoClick"
                                    style="position:absolute; left:4px; top:146px; height:25px; width:130px; Color:#000000; background-Color:#BBBBBF ">
                            <Div id="DivTextResult" style="position:absolute; left:138px; top:152px; height:13px; width:200px"> Resultat </Div>
                    </fieldset>
                    <TEXTAREA id="TextResult" name="TextResult" Value ="" 
                            style="border-style: solid; position: absolute; left:4px; top: 360px; height:133px; width:463px"> </TEXTAREA>
     
            </body> 
    </HTML>
    Nom : VBSEtudeRegExp.JPG
Affichages : 529
Taille : 124,7 Ko
    Le programme d'aide qui peut être lancé seul ou depuis le HTA si dessus.(enregistrer sous le nom AideEtudeRegExp.hta)
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    <HTML>
            <HEAD lang="fr">
                    <title> Aide rédaction Pattern de l'objet RegExp </title>
                    <HTA:APPLICATION
                            id="AideEtudeRegExp"
                            applicationname="AideEtudeRegExp"
                            version="1"
                            SCROLL="no"
                            BorderStyle="normal"
                    >
            </HEAD>
    <SCRIPT language="VBScript" type="text/vbscript">
    '------------------------------------------------------------------------------------------------------------------
    Sub Window_Onload()
            ResizeTo 1223,787 ' dimensionne la fenêtre HTA (largeur, hauteur)
            MoveTo (Screen.availWidth-1223)/2,(Screen.availHeight - 787) / 2 ' Centrage de la fenêtre HTA sur le burreeau
    End Sub
    '------------------------------------------------------------------------------------------------------------------
     </SCRIPT>
     
            <body style="font-family:Courier, MS Sans Serif, Arial, Verdana, serif; font-size=12px; font-weight:bold; background-color:#FFFFD2" >
            
    \ &nbsp &nbsp Marque le caractère suivant comme caractère spécial ou littéral. Par exemple, "n" correspond au caractère "n". "\n" correspond à un caractère de nouvelle ligne. <br>
     &nbsp &nbsp &nbsp &nbsp La séquence "\\" correspond à "\", tandis que "\(" correspond à "(". <br>
    ^ &nbsp &nbsp Correspond au début de la saisie. <br>
    $ &nbsp &nbsp Correspond à la fin de la saisie. <br>
    * &nbsp &nbsp Correspond au caractère précédent zéro fois ou plusieurs fois. Ainsi, "zo*" correspond à "z" ou à "zoo". <br>
    + &nbsp &nbsp Correspond au caractère précédent une ou plusieurs fois. Ainsi, "zo+" correspond à "zoo", mais pas à "z". <br>
    ? &nbsp &nbsp Correspond au caractère précédent zéro ou une fois. Par exemple, "a?ve?" correspond à "ve" dans "lever". <br>
    . &nbsp &nbsp Correspond à tout caractère unique, sauf le caractère de nouvelle ligne. <br>
    (modèle) &nbsp &nbsp Recherche le modèle et mémorise la correspondance. La sous-chaîne correspondante peut être extraite de la collection Matches obtenue, <br>
     &nbsp &nbsp &nbsp &nbsp  à l'aide d'Item [0]...[n]. Pour trouver des correspondances avec des caractères entre parenthèses ( ), utilisez "\(" ou "\)". <br>
    x|y &nbsp &nbsp Correspond soit à x soit à y. Par exemple, "z|foot" correspond à "z" ou à "foot". "(z|f)oo" correspond à "zoo" ou à "foo". <br>
    {n} &nbsp &nbsp n est un nombre entier non négatif. Correspond exactement à n fois le caractère. Par exemple, "o{2}" ne correspond pas à "o" dans "Bob," <br>
     &nbsp &nbsp &nbsp &nbsp  mais aux deux premiers "o" dans "fooooot". <br>
    {n,} &nbsp &nbsp n est un entier non négatif. Correspond à au moins n fois le caractère. Par exemple, "o{2,}" ne correspond pas à "o" dans "Bob", <br>
     &nbsp &nbsp &nbsp &nbsp mais à tous les "o" dans "fooooot". "o{1,}" équivaut à "o+" et "o{0,}" équivaut à "o*". <br>
    {n,m} &nbsp &nbsp m et n sont des entiers non négatifs. Correspond à au moins n et à au plus m fois le caractère. Par exemple, <br>
     &nbsp &nbsp &nbsp &nbsp "o{1,3}" correspond aux trois premiers "o" dans "foooooot" et "o{0,1}" équivaut à "o?". <br>
    [xyz] &nbsp &nbsp Jeu de caractères. Correspond à l'un des caractères indiqués. Par exemple, "[abc]" correspond à "a" dans "plat". <br>
    [^xyz] &nbsp &nbsp Jeu de caractères négatif. Correspond à tout caractère non indiqué. Par exemple, "[^abc]" correspond à "p" dans "plat". <br>
    [a-z] &nbsp &nbsp Plage de caractères. Correspond à tout caractère dans la série spécifiée. Par exemple, <br>
     &nbsp &nbsp &nbsp &nbsp "[a-z]" correspond à tout caractère alphabétique minuscule compris entre "a" et "z". <br>
    [^m-z] &nbsp &nbsp Plage de caractères négative. Correspond à tout caractère ne se trouvant pas dans la série spécifiée. Par exemple, <br>
     &nbsp &nbsp &nbsp &nbsp "[^m-z]" correspond à tout caractère ne se trouvant pas entre "m" et "z". <br>
    \b &nbsp &nbsp Correspond à une limite représentant un mot, autrement dit, à la position entre un mot et un espace. Par exemple, <br>
     &nbsp &nbsp &nbsp &nbsp "er\b" correspond à "er" dans "lever", mais pas à "er" dans "verbe". <br>
    \B &nbsp &nbsp Correspond à une limite ne représentant pas un mot. "en*t\B" correspond à "ent" dans "bien entendu". <br>
    \d &nbsp &nbsp Correspond à un caractère représentant un chiffre. Équivaut à [0-9]. <br>
    \D &nbsp &nbsp Correspond à un caractère ne représentant pas un chiffre. Équivaut à [^0-9]. <br>
    \f &nbsp &nbsp Correspond à un caractère de saut de page. <br>
    \n &nbsp &nbsp Correspond à un caractère de nouvelle ligne. <br>
    \r &nbsp &nbsp Correspond à un caractère de retour chariot. <br>
    \s &nbsp &nbsp Correspond à tout espace blanc, y compris l'espace, la tabulation, le saut de page, etc. Équivaut à "[ \f\n\r\t\v]". <br>
    \S &nbsp &nbsp Correspond à tout caractère d'espace non blanc. Équivaut à "[^ \f\n\r\t\v]". <br>
    \t &nbsp &nbsp Correspond à un caractère de tabulation. <br>
    \v &nbsp &nbsp Correspond à un caractère de tabulation verticale. <br>
    \w &nbsp &nbsp Correspond à tout caractère représentant un mot et incluant un trait de soulignement. Équivaut à "[A-Za-z0-9_]". <br>
    \W &nbsp &nbsp Correspond à tout caractère ne représentant pas un mot. Équivaut à "[^A-Za-z0-9_]". <br>
    \num &nbsp &nbsp Correspond à num, où num est un entier positif. Fait référence aux correspondances mémorisées. Par exemple, <br>
     &nbsp &nbsp &nbsp &nbsp"(.)\1" correspond à deux caractères identiques consécutifs. <br>
    \n &nbsp &nbspCorrespond à n, où n est une valeur d'échappement octale. Les valeurs d'échappement octales doivent comprendre 1, 2 ou 3 chiffres. Par exemple, <br>
     &nbsp &nbsp &nbsp &nbsp"\11" et "\011" correspondent tous les deux à un caractère de tabulation. "\0011" équivaut à "\001" & "1". <br>
     &nbsp &nbsp &nbsp &nbspLes valeurs d'échappement octales ne doivent pas excéder 256. <br>
     &nbsp &nbsp &nbsp &nbspSi c'était le cas, seuls les deux premiers chiffres seraient pris en compte dans l'expression. Permet d'utiliser les codes ASCII dans des expressions régulières. <br>
    \xn &nbsp &nbspCorrespond à n, où n est une valeur d'échappement hexadécimale. Les valeurs d'échappement hexadécimales doivent comprendre deux chiffres obligatoirement. <br>
     &nbsp &nbsp &nbsp &nbspPar exemple, "\x41" correspond à "A". "\x041" équivaut à "\x04" & "1". Permet d'utiliser les codes ASCII dans des expressions régulières. <br>
            </body> 
     
    </HTML>
    Il existe une version VB6 et anterieur ICI
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  2. #2
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    décembre 2004
    Messages
    5 662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : décembre 2004
    Messages : 5 662
    Points : 14 614
    Points
    14 614
    Par défaut Mise à jour recuperation du (modèle), SubMatches
    (modèle) Recherche le modèle et mémorise la correspondance. La sous-chaîne correspondante peut être extraite de la collection Matches obtenue,
    à l'aide d'Item [0]...[n]. Pour trouver des correspondances avec des caractères entre parenthèses ( ), utilisez "\(" ou "\)".
    Dans la sub BtGoClick, ligne 66 à 107:
    - ligne 68 devient Dim MeStr, MsG, T, U, ajout des variables T et U et suppression de la variable Cpt
    - ligne 90 à 96, remplacer par
    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
    			For U = 0 To ResulT.Count - 1
    				Set Match = ResulT(U)
    				MsG = MsG & "position: " & Match.FirstIndex & "  Longueur: " & Match.Length & " Valeur: " & Match.Value & vbNewLine
    				If Match.SubMatches.Count > 0 Then
    					For T = 0 To Match.SubMatches.Count - 1
    						If Trim(Match.SubMatches(T)) <> "" Then
    							MsG = MsG & "SubMatches = ---|" & Match.SubMatches(T) & "|---" & vbNewLine
    						End If
    					Next
    				End If
    				Set Match = Nothing
    			Next
    			Set ResulT = Nothing
    			MsG = Left(MsG, (len(MsG)- len(vbNewLine))) 'pour supprimer le dernier vbNewLine
    			MsG = "Nbr.d'occurence: " & ResulT.Count & vbNewLine & MsG
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Membre régulier
    Homme Profil pro
    Tech maintenance Info
    Inscrit en
    août 2009
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Tech maintenance Info
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : août 2009
    Messages : 237
    Points : 99
    Points
    99
    Par défaut
    Bonjour,
    En testant une adresse mail qui commence par une majuscule:
    Pattern: ^[A-B]\w+
    Que je sélectionne l'option "distinction caract, min/MAJ" ou "Accepte caract, min.MAJ" donne le même résultat.

    L’option IgnoreCase ne devrait elle pas faire la différence?

  4. #4
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    décembre 2004
    Messages
    5 662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : décembre 2004
    Messages : 5 662
    Points : 14 614
    Points
    14 614
    Par défaut
    Salut

    Normal avec ce pattern : ^[A-B]\w+
    Prenons une adresse : Albert@monprest.fr

    Si dans un premier temps tu coches distinction min/MAJ
    le test = au moins une correspondance trouvée car le pattern contient A (^[A-B]\w+)

    Si dans un deuxième temps tu coches accepte min/MAJ
    le test = au moins une correspondance trouvée car le pattern contient A et tu lui dis que dés qu'il y a un A ou un a (accepte min/MAJ) le teste doit être Ok.

    -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    Pour vérifier si une adresse mail commence par une majuscule, le pattern doit être: ^[a-z]

    Si dans un premier temps tu coches distinction min/MAJ
    le test = aucune correspondance trouvée car le pattern demande de ne trouver que des caractères minuscules

    Si dans un deuxième temps tu coches accepte min/MAJ
    le test = au moins une correspondance trouvée car le pattern spécifie une recherche de caractères minuscules mais tu lui dis en cochant accepter min/MAJ que le test doit être OK, première lettre en minuscule ou MAJUSCULE, peut importe.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  5. #5
    Membre régulier
    Homme Profil pro
    Tech maintenance Info
    Inscrit en
    août 2009
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Tech maintenance Info
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : août 2009
    Messages : 237
    Points : 99
    Points
    99
    Par défaut
    Citation Envoyé par ProgElecT Voir le message

    Pour vérifier si une adresse mail commence par une majuscule, le pattern doit être: ^[a-z]

    Si dans un premier temps tu coches distinction min/MAJ
    le test = aucune correspondance trouvée car le pattern demande de ne trouver que des caractères minuscules

    Si dans un deuxième temps tu coches accepte min/MAJ
    le test = au moins une correspondance trouvée car le pattern spécifie une recherche de caractères minuscules mais tu lui dis en cochant accepter min/MAJ que le test doit être OK, première lettre en minuscule ou MAJUSCULE, peut importe.
    J’avoue être un peu perdu là.
    Si j’utilise le pattern = (^[a-z]\w+)
    Dans les deux cas je n’ai pas d’occurrences trouvés.

  6. #6
    Membre régulier
    Homme Profil pro
    Tech maintenance Info
    Inscrit en
    août 2009
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Tech maintenance Info
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : août 2009
    Messages : 237
    Points : 99
    Points
    99
    Par défaut
    Oups autant pour moi! je dois avoir un bug de rafraîchissement.
    Par moment la "navigation" entre les 2 options ne me rafraîchit pas le résultat en cliquant sur le bouton "GO".

    Vu comment l’explication est donnée ici:

    https://msdn.microsoft.com/fr-fr/lib...code-snippet-3

    Citation:

    L'exemple suivant correspond aux mots qui commencent par une majuscule. Il utilise la sous-expression [A-Z] pour représenter la plage de majuscules de A à Z.
    L’option ne devrait elle pas travailler dans l’autre sens?

  7. #7
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    décembre 2004
    Messages
    5 662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : décembre 2004
    Messages : 5 662
    Points : 14 614
    Points
    14 614
    Par défaut
    Re

    L’option ne devrait elle pas travailler dans l’autre sens?
    Ben oui, la preuve

    Un teste simple: pattern = ^[A-Z] et mot a vérifier "Attention"
    avec distinction min/MAJ coché, résultat = au moins une correspondance trouvée
    avec accepte min/MAJ coché, résultat = au moins une correspondance trouvée
    On change le mot a vérifier --> "attention"
    avec distinction min/MAJ coché, résultat = aucune correspondance trouvée
    avec accepte min/MAJ coché, résultat = au moins une correspondance trouvée

    On change le pattern = ^[a-z] et mot a vérifier "Attention"
    avec distinction min/MAJ coché, résultat = aucune correspondance trouvée
    avec accepte min/MAJ coché, résultat = au moins une correspondance trouvée
    On change le mot a vérifier --> "attention"
    avec distinction min/MAJ coché, résultat = au moins une correspondance trouvée
    avec accepte min/MAJ coché, résultat = au moins une correspondance trouvée

    [A-Z] = rechercher, plage de caractères (en MAJUSCULE), correspond à tout caractère dans la série spécifiée, mais .... si on demande de ne pas faire attention si les caractères trouvés sont en MAJ ou min, c'est comme si on avais un pattern égal à [A-Za-z] soit plage de caractère A à Z mais aussi a à z.

    [a-z] = rechercher, plage de caractères (en minuscule), correspond à tout caractère dans la série spécifiée, mais .... si on demande de ne pas faire attention si les caractères trouvés sont en MAJ ou min, c'est comme si on avais un pattern égal à [a-zA-Z] soit plage de caractère a à z mais aussi A à Z.

    Je ne sais pas si j'ai été plus clair
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  8. #8
    Membre régulier
    Homme Profil pro
    Tech maintenance Info
    Inscrit en
    août 2009
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Tech maintenance Info
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : août 2009
    Messages : 237
    Points : 99
    Points
    99
    Par défaut
    Pas de problème c’est très clair.
    Je ne comprends pas bien l’utilité de deux options.
    Si on fait la distinction min/Maj avec par exemple le pattern [A-Z].
    Si cette option n’est pas cochée cela sous entend que les patterns qui acceptent les mini/MAJ sont acceptés non?
    Par exemple \w+

    Pour résumer:
    Si on cherche des Maj= [A-Z]
    Si on cherche des Min = [a-z]
    Si on ne fait pas de distinction = \w+

  9. #9
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    décembre 2004
    Messages
    5 662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : décembre 2004
    Messages : 5 662
    Points : 14 614
    Points
    14 614
    Par défaut
    Citation Envoyé par NeriXs Voir le message
    ...
    Si on ne fait pas de distinction = \w+
    bien résumé.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  10. #10
    Membre chevronné
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    juillet 2008
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : juillet 2008
    Messages : 1 011
    Points : 1 986
    Points
    1 986
    Par défaut
    salut,

    merci pour ton code et ta contribution +1 , juste quelques remarques dans dans l'aide et le code source

    dans l'aide il y a des choses que vous n'avez pas citez:

    *)

    ^ Correspond au début de la saisie.
    ^ Correspond au début de la chaine en mode singleline qui est le mode par défaut ou correspond au debut d'une ligne dans le mode multiline

    $ Correspond à la fin de la saisie.
    $ Correspond à la fin de la chaine en mode singleline qui est le mode par défaut ou correspond a la fin d'une ligne dans le mode multiline


    pour voir la différence concrètement, si on ajoute dans le code source:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RegularExpressioN.Multiline = True
    et on mets ce pattern:

    avec la chaîne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    abc 415
    def 458
    xmp 1447
    en mode multiline va matcher et en mode singleline il ne va pas trouvé d'occurences


    *)

    dans l'aide vous ne mentionner pas les assertions positive et negative lookahead (?=) (?!)

    *)

    dans l'aide aussi vous ne mentionnez pas la syntaxe \uxxxx qui peux matcher un seul point de code en mode unicode par exemple le pattern \u2665 match le coeur dans la chaine : i ♥ you

    *)

    aussi vous ne mentionnez pas les groupes non-capturant (?: ) qui au contraire des groupes capturant ne mémorisent pas les correspondances

    *)

    \b Correspond à une limite représentant un mot, autrement dit, à la position entre un mot et un espace

    ici mot est ambigu, par exemple dans ces deux chaînes de caractères l'ancre \b ne va pas matcher les positions des mots exactes "Bill O'Reilly" ou "je cherche une rôtisserie à proximité de St-Hubert" car l'ancre \b se base sur les raccourcis \w et \W pour defenir ce qui est un mot ou pas ce qui peux poser parfois quelques problèmes

  11. #11
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    décembre 2004
    Messages
    5 662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : décembre 2004
    Messages : 5 662
    Points : 14 614
    Points
    14 614
    Par défaut
    Salut I'm_HERE


    Merci de toutes ses remarques constructives.

    Cette source, surtout au niveau de sa page d'aide, ne prétendait pas être complète, loin de là.
    Je n'ai pas le temps de vérifier si toutes tes indications sont applicables au RegExe sous VBScript, car je sais déjà que suivant le langage de programmation utilisé, certaines choses différent légèrement.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  12. #12
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    février 2006
    Messages
    1 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2006
    Messages : 1 276
    Points : 3 448
    Points
    3 448
    Par défaut
    bonjour,

    remarques pertinentes car contrairement à ce que j'avais indiqué dans un message précédent
    les assertions +/- et les parenthèses non-capturantes sont supportées par la version 5.7/5.8
    sur le dernier point, il suffit de préciser "\b Correspond à une limite représentant un mot non composé"
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

Discussions similaires

  1. Manipulation de l'objet RegExp
    Par ProgElecT dans le forum Vos téléchargements VB6
    Réponses: 1
    Dernier message: 16/10/2017, 14h00
  2. Problèmes dans la manipulation de l'objet "axes"
    Par Bloodista dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 08/06/2009, 19h00
  3. Manipulation de l'objet Form
    Par atom41 dans le forum VBA Access
    Réponses: 5
    Dernier message: 18/01/2008, 21h23
  4. [DOM] Objet RegExp recherche de pattern
    Par Loki13 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 04/08/2006, 18h50
  5. Manipulation d'un Objet OLE Excel ?
    Par NiKro75 dans le forum VBA Access
    Réponses: 10
    Dernier message: 05/07/2004, 18h43

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