\d+\.?\d*|\.\d+(?=\s*ch)
Appliqué à "STA.23.5 .1 Mots 67.89 CH" Capture 23.5 d'abord car il correspond \d+\.?\d*
Le ou "|" a la plus haute préséance, si vous voulez y penser comme ça, diviser le motif en deux matchs possibles: \d+\.?\d*
et \.\d+(?=\s*ch)
Si vous voulez empêcher \d+\.?d*
De la correspondance de 23,5, vous devrez ajouter un critère supplémentaire, comme nécessiter un personnage d'espace avant lui et utiliser la capture de parenthèses pour obtenir le nombre en tant que submatch: \s(\d+\.?\d*)
Vous pourriez correspondre à la fois à ce modèle, \s(\d+\.?\d*)|\.\d+(?=\s*ch)
, mais gardez à l'esprit que si la première mi-temps correspond, vous regardez les sous-rapports pour la valeur réelle.
Le vrai problème ici est que la classe regexp de VBScript ne prend pas en charge LookBehind, juste lookahead.