RegExp récupérer Submatches ?

Résolu
NeriXs Messages postés 258 Date d'inscription lundi 4 mai 2015 Statut Membre Dernière intervention 27 février 2024 - 13 déc. 2017 à 21:39
Whismeril Messages postés 19020 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 15 avril 2024 - 18 déc. 2017 à 13:44
Bonjour,
Je bute sur la récupération des Submatches des (groups) de mon pattern.
J’espère que ce que j’essaie de faire est réalisable?
Pouvez-vous m’aider?

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

Dim strText, RegularExpressioN

'([^\,]|^)([\,])(?![\,])
'[^\,] = n'est pas une virgule.
'| = ou.
'^ = est au début de la chaîne.
'(?![\,]) = n'est pas suivit d'une virgule.
'Equivalent a (?<![\,])[\,](?![\,]) soit (pas de virgule avant, pas de virgule après), mais non supporter par vb (test arrière (?<!....).

'"\" =([^\\]|^)([\\])(?![\\])
'"/" =([^\/]|^)([\/])(?![\/])
'"*" =([^\*]|^)([\*])(?![\*])

FindSpeciChars = "([^\\]|^)([\\])(?![\\])"_
& "|([^\/]|^)([\/])(?![\/])"_
& "|([^\*]|^)([\*])(?![\*])"

strText = TxtSource
Set RegularExpressioN = New RegExp
RegularExpressioN.Pattern = FindSpeciChars
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
MatchMsg = MatchMsg & "Correspondance trouvée """ & match.Submatches(1) & """ en position: " & match.FirstIndex + Len(match.SubMatches(0)) & vbCrLf
Next
'MsgBox MatchMsg
Else
MsgBox "Aucun match", 0, "VBScript RegExp Tester"
End If
strText = RegularExpressioN.Replace(strText, "$&")'"$1" "$&"
Set RegularExpressioN = Nothing
ReslutSpeciChars = strText

MsgBox TxtSource & vbCrLf & ReslutSpeciChars & vbCrLf & MatchMsg
A voir également:

12 réponses

jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 344
13 déc. 2017 à 22:40
Bonjour,
Ton pattern ne semble pas bon.
Commence par le tester en ligne, par exemple ici : http://regexstorm.net/tester
Sinon.. décris nous exactement ce que tu espères obtenir.

0
Rejoignez-nous