Récupération du message (regex.replace). [Résolu]

Messages postés
101
Date d'inscription
lundi 4 mai 2015
Dernière intervention
11 janvier 2018
- - Dernière réponse : NeriXs
Messages postés
101
Date d'inscription
lundi 4 mai 2015
Dernière intervention
11 janvier 2018
- 21 déc. 2017 à 15:45
Bonjour,
J'essaie de récupérer le résultat de mon remplacement dans mon message de sortie afin d'obtenir ceci:
Const texte:
\-\\\*-****/Un test, Pourquoi faire? c'est fou ça! \****-*///*/
Result:
\(-)\\\(*)(-)****(/)Un( )test(,)( )Pourquoi( )faire(?)( )c(')est( )fou( )ça(!)( )\****(-)(*)///(*)(/)
Pouvez-vous m'aider?

Const texte = "\-\\\*-****/Un test, Pourquoi faire? c'est fou ça! \****-*///*/"

Dim objDico
Dim myarray, arrDicoItem
Dim item, strList, cprovisoire
Dim i, t, bpermute

myarray = Array("\?", " ", "\,", "\*", "\!", "\-", "\/", "\'")
Set objDico = CreateObject("Scripting.Dictionary")

For Each item In myarray
Recherche(item)
Next

arrDicoItem = objDico.Items

bpermute = True
Do While bpermute = True
bpermute = False
For t = 0 To UBound(arrDicoItem)-1
If CInt(Split(arrDicoItem(t),": ")(1)) > CInt(Split(arrDicoItem(t + 1),": ")(1)) Then
cprovisoire = arrDicoItem(t)
arrDicoItem(t) = arrDicoItem(t + 1)
arrDicoItem(t + 1) = cprovisoire
bpermute = True
End If
Next
Loop

strList = objDico.Count & " correspondance(s) trouvée(s):" & vbcrlf
For i = 0 To UBound(arrDicoItem)
strList = strList & "(" & i+1 & ")" & " " & arrDicoItem(i) & vbCrLf
Next
Set objDico = Nothing

'result = regex.Replace ligne 65
MsgBox texte & vbCrLf & "result" & vbCrLf & strList,,"Liste"
'MsgBox texte & vbCrLf & result & vbCrLf & strList,,"Liste"

WScript.Quit


Sub Recherche(Caractere)
Dim regex, matches
Dim Pattern, match, i
Pattern = "([^" & Caractere & "]|^)(" & Caractere & ")(?!" & Caractere & ")"

Set regex = New RegExp
regex.Pattern = Pattern
regex.Global = True

Set matches = regex.Execute(texte)

For Each match In matches
For i = 1 To match.Submatches.Count - 1 Step 2
If Not (match.Submatches(i) = "") Then
objDico.Add match.FirstIndex + Len(match.Value) - 1, _
"Correspondance trouvée """ & _
match.Submatches(i) & """ en position: " & _
match.FirstIndex + Len(match.Value) - 1
End If
Next
Next

'#######################################################
result = regex.Replace(texte, "($2)")
MsgBox result
'#######################################################

Set matches = Nothing
Set regex = Nothing
End Sub
Afficher la suite 

Votre réponse

1 réponse

Meilleure réponse
Messages postés
1855
Date d'inscription
jeudi 23 mai 2002
Dernière intervention
24 juin 2018
1
Merci
Bonjour NeriXs,

Il te suffit de lire le tableau à l'envers.
Dim result
result = texte
For i=UBound(arrDicoItem) To 0 Step -1
   Dim parse1, parse2, intstr
   parse1 = "(" & Left(Split(arrDicoItem(i),"trouvée " & """")(1),1) & ")"
   parse2 = Split(arrDicoItem(i),"position: ")(1)
   intstr = Len(result)
   result = Left(result,parse2) & parse1 & Right(result, intstr - parse2 - 1)
Next

MsgBox result



jean-marc

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 97 internautes nous ont dit merci ce mois-ci

NeriXs
Messages postés
101
Date d'inscription
lundi 4 mai 2015
Dernière intervention
11 janvier 2018
-
Bien vu cs_JMO Merci à toi!
Commenter la réponse de cs_JMO

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.