[VBScript | Expression Régulière] Récupérer la valeur de la chaine matchant une regex
Bonjour,
Je me bat encore avec les regex.
J'aimerais récupérer la chaine de caractère qui match exactement ma regex.
Or je me retrouve avec un comportement bizarre du match de ma regex
Si je fais :
Code:
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
| Set RegularExpressionObject = New RegExp
dim Matches
dim ValeurChaineExpReg
dim strIso8859
dim strWin1252
dim strPourcent22
strIso8859 = "%22%22%22%22=?iso-8859-1?q?application%22%22%22%22/pdf"
strWin1252 = "urn:mimetype:handler:%22%22%22=?windows-1252?q?application%22%22%22/pdf"
strPourcent22 = "<RDF:Description RDF:about=" & chr(34) & "urn:mimetype:handler:%22=windows-application%22/pdf" & chr(34)
With RegularExpressionObject
.Pattern = "(%22)*=windows-application(%22)*/pdf"
.IgnoreCase = False
End With
MsgBox strIso8859
MsgBox RegularExpressionObject.Test(strIso8859)
Set Matches = RegularExpressionObject.Execute(strIso8859)
for each match in Matches
ValeurChaineExpReg = match.value
MsgBox "chaine à remplacer : " & ValeurChaineExpReg
next
MsgBox strWin1252
MsgBox RegularExpressionObject.Test(strWin1252)
Set Matches = RegularExpressionObject.Execute(strWin1252)
for each match in Matches
ValeurChaineExpReg = match.value
MsgBox "chaine à remplacer : " & ValeurChaineExpReg
next
MsgBox strPourcent22
MsgBox RegularExpressionObject.Test(strPourcent22)
Set Matches = RegularExpressionObject.Execute(strPourcent22)
for each match in Matches
ValeurChaineExpReg = match.value
MsgBox "chaine à remplacer : " & ValeurChaineExpReg
next |
Dans ce cas pas de soucis il match correctement strPourcent22 et je peux récupérer la chaine de caractère "%22=windows-application%22/pdf" qui est la chaine que je souhaite remplacer sans soucis.
Mais il ne matchera que ce cas et pas les deux autres chaines de caractères
Maintenant si je fais
Code:
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
| Set RegularExpressionObject = New RegExp
dim Matches
dim ValeurChaineExpReg
dim strIso8859
dim strWin1252
dim strPourcent22
strIso8859 = "%22%22%22%22=?iso-8859-1?q?application%22%22%22%22/pdf"
strWin1252 = "urn:mimetype:handler:%22%22%22=?windows-1252?q?application%22%22%22/pdf"
strPourcent22 = "<RDF:Description RDF:about=" & chr(34) & "urn:mimetype:handler:%22=windows-application%22/pdf" & chr(34)
With RegularExpressionObject
' Modification du Pattern
.Pattern = "(%22)*[\w\W]*application(%22)*/pdf"
.IgnoreCase = False
End With
MsgBox strIso8859
MsgBox RegularExpressionObject.Test(strIso8859)
Set Matches = RegularExpressionObject.Execute(strIso8859)
for each match in Matches
ValeurChaineExpReg = match.value
MsgBox "chaine à remplacer : " & ValeurChaineExpReg
next
MsgBox strWin1252
MsgBox RegularExpressionObject.Test(strWin1252)
Set Matches = RegularExpressionObject.Execute(strWin1252)
for each match in Matches
ValeurChaineExpReg = match.value
MsgBox "chaine à remplacer : " & ValeurChaineExpReg
next
MsgBox strPourcent22
MsgBox RegularExpressionObject.Test(strPourcent22)
Set Matches = RegularExpressionObject.Execute(strPourcent22)
for each match in Matches
ValeurChaineExpReg = match.value
MsgBox "chaine à remplacer : " & ValeurChaineExpReg
next |
Je peux matcher les trois chaines de caractère.
Par contre lorsque j'essaye d'afficher ValeurChaineExpReg il m'affiche toute la chaine de caractère et pas seulement la chaine de caractère matchant uniquement la regex.
En fait mon but serait de n'avoir qu'une seule expression régulière pour gérer correctement les chaines de caractère strIso8859, strWin1252, strPourcent22 et pour chacune d'elle récupérer la sous-chaine matchant correctement ma regex.
Pourquoi dans le premier cas je n'ai pas de soucis et dans le deuxième cas en utilisant [\w\W]* (= n'importe quel type de caractère 0 ou n fois), il ne me permet pas d'extraire la chaine exacte matchant ma regex????
Si qqn à une idée ;)
Merci d'avance