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

VBScript Discussion :

RegExp récupérer Submatches ?


Sujet :

VBScript

  1. #21
    Invité
    Invité(e)
    Par défaut
    2 éme tentative

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ((?:([!$&-/:-@\[-^{-~£€¨])|(^[!$&-/:-@\[-^{-~£€¨]){2,})*)([!$&-/:-@\[-^{-~£€¨]?)
    Cette fois 4 groupes !
    Toujours pas bon ! ma salade est prête pour ce midi !

    Je suis en train de tous mélanger dans ma petite tête .
    Dernière modification par Invité ; 17/12/2017 à 12h54.

  2. #22
    Invité
    Invité(e)
    Par défaut
    En parallèle dans un bute purement éducatif, si quelqu’un avait un peu de temps et l’envie de jouer avec cette fonctionnalité de Javascript!
    J’aurais bien aimé voir ce que ça donne.
    Je ne me sens pas encore capable de le mettre en place.

    Lien : http://cwestblog.com/2011/07/18/vbsc...back-function/

    Code de base :
    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
    <html>
    <head>
    <title>My HTML application</title>
    <HTA:APPLICATION
      APPLICATIONNAME="My HTML application"
      ID="MyHTMLapplication"
      VERSION="1.0"/>
    </head>
     
    <script language="VBScript">
     
    Option Explicit
     
    Dim FindSpaciChars
    Dim strText , RegularExpressioN 
    Dim matches, MatchMsg, match
     
    FindSpaciChars = "((?:([!$&-/:-@\[-^{-~£€¨])\2+)*)([!$&-/:-@\[-^{-~£€¨]?)"
     
    	Sub JobSpaciChars 	
    		strText = TxtSource.Value		
    		Set RegularExpressioN = New RegExp
    		RegularExpressioN.Pattern = FindSpaciChars
    		RegularExpressioN.Global = True
    		Set matches = RegularExpressioN.Execute(strText)
    			If matches.Count > 0 Then		  
    		    	 MatchMsg = matches.Count & " correspondance(s) trouvée(s)." & vbCrLf
    		    		For Each match In matches
    						If Not (match.SubMatches(2) = "") Then
                    			MatchMsg = MatchMsg & "Correspondance trouvée """ & match.Submatches(2) & """ en position: " & match.FirstIndex + Len(match.SubMatches(0)) & vbCrLf        
    						End If
    		    		Next
    		    	TxtMatchesSpaciChars.Value =  MatchMsg
    		  	Else
    		    	MsgBox "No match", 0, "VBScript Regular Expression Tester"
    		  	End If		  										
    		strText = RegularExpressioN.Replace(strText, "$1$3")
    		Set RegularExpressioN = Nothing
    		TxtReslutSpaciChars.Value = strText		 
    	End Sub	
     
    </script>
     
    <body bgcolor="white">
     
    </body>			    	
        	<!-- LABEL TxtSource  -->
    		<label for="LabSource">Saisir le texte à traiter:</label></P>
    		<!-- TEXTBOX TxtSource -->
        	<TEXTAREA type="text" name="TxtSource" Value ="" style="height:55px; width:500px">\-\\\*-****/Un test, Pourquoi faire? c'est fou ça! \****-*/// /</TEXTAREA></P>    	
     
        	<!-- BUTTON JobSpaciChars -->
        	<input type="button" value="Traitement des caractères minuscules isolés." onClick="JobSpaciChars" style="height:35px; width:500px"></P>
     
        	<!-- TEXTBOX TxtMatchesSpaciChars -->
        	<TEXTAREA type="text" name="TxtMatchesSpaciChars" Value ="" style="height:75px; width:500px"></TEXTAREA></P>
     
        	<!-- LABEL LabResultCharsMinChars -->
        	<label style="height:15px; width:500px" for="LabResultCharsMinChars">Caractères  de la "Phase 1" remplacés:</label></P>
     
        	<!-- TEXTBOX TxtReslutSpaciChars -->
        	<TEXTAREA type="text" name="TxtReslutSpaciChars" Value ="" style="height:75px; width:500px"></TEXTAREA>
     
    </html>
    Pour mémo:
    Ce qui coince avec la pattern originale, c'est que si le groupe 3 est vide et que tu veux mettre des parenthèses autour du caractère isolé, tu risques de te retrouver avec des parenthèses autour de rien.
    Une possibilité qu'offre javascript et qui consiste à utiliser une fonction à la place d'une chaîne de remplacement.
    (L’intérêt d'avoir une fonction, c'est que tu peux dans la fonction tester si un groupe de capture est vide pour choisir quel va être le remplacement.)

  3. #23
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    J’ai beau tourner la chose dans tous les sens, je ne voix pas dans quel cas de figure le groupe 3 pourrait être vide vu qu’on a l'a rendu optionnel?
    Pourrais-je avoir un exemple concret?

Discussions similaires

  1. Réponses: 11
    Dernier message: 18/08/2015, 22h13
  2. [RegEx] Regexp > Récupérer la nième <option> d'un <select id="x">
    Par Sylvain Leray dans le forum Langage
    Réponses: 11
    Dernier message: 18/04/2012, 18h16
  3. [RegExp] Récupérer la valeur qui a matché
    Par need2learn dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 21/01/2009, 17h32
  4. RegExp: Récupérer une valeur en début de chaine
    Par pekka77 dans le forum Langage
    Réponses: 8
    Dernier message: 23/08/2006, 16h07
  5. Réponses: 8
    Dernier message: 02/11/2005, 14h16

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