Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Général VBA
Général VBA Forum général VBA . Pour les logiciels spécifiques (Access, Excel, Word, ...), postez dans les bons sous forums.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/05/2007, 14h36   #1
Membre du Club
 
Avatar de zoullou
 
Inscription : janvier 2003
Messages : 130
Détails du profil
Informations forums :
Inscription : janvier 2003
Messages : 130
Points : 67
Points : 67
Par défaut Recherche de chaine de caractere

Bonjour,

J'essais de faire un programme qui recherche des données dans des fichiers textes. Pour cela, j'utilise la librairie VBScript_RegExp_55.

Mon souci est que je n'arrive pas à récupérer le code retour en entier. L'expression ne me renvoie que le dernier chiffre :

Code :
1
2
3
4
5
6
7
Set Matches = reg.Execute("sortie standard.*([0-9]{1,3})")
For Each Match In Matches
   Debug.Print "source >>", Match.Value
   For i = 0 To Match.SubMatches.Count - 1
      Debug.Print "[$" & i + 1 & "]", Match.SubMatches(i)
   Next i
Next Match
Ce bout de code est executer sur la chaine : "code retour du batch : 64"

Merci
zoullou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2007, 09h42   #2
Membre chevronné
 
Inscription : octobre 2006
Messages : 541
Détails du profil
Informations personnelles :
Localisation : France, Ardèche (Rhône Alpes)

Informations forums :
Inscription : octobre 2006
Messages : 541
Points : 760
Points : 760
Bonjour,

La propriété "global" est-elle sur "true" (elle est sur false par défaut) ?
Michel_M est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2007, 10h41   #3
Membre du Club
 
Avatar de zoullou
 
Inscription : janvier 2003
Messages : 130
Détails du profil
Informations forums :
Inscription : janvier 2003
Messages : 130
Points : 67
Points : 67
Bonjour,

Voila le code exact pour reproduire le problème :
Code :
1
2
3
4
5
6
7
8
9
regExp.pattern = "code retour du batch.*([0-9]{1,3})"
regExp.Global = True
Set Matches = reg.Execute("code retour du batch : 64")
For Each Match In Matches
   Debug.Print "source >>", Match.Value
   For i = 0 To Match.SubMatches.Count - 1
      Debug.Print "[$" & i + 1 & "]", Match.SubMatches(i)
   Next i
Next Match
Il semble que le pattern est mal interprété par la librarie.

Merci d'avance
zoullou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2007, 11h55   #4
Membre chevronné
 
Inscription : octobre 2006
Messages : 541
Détails du profil
Informations personnelles :
Localisation : France, Ardèche (Rhône Alpes)

Informations forums :
Inscription : octobre 2006
Messages : 541
Points : 760
Points : 760
Re
regexp n'est il pas un mot réservé ?

1/ regexp et reg pour la même variable ?

2/
le ":" de ton texte n'est pas dans le pattern ?
Code :
1
2
3
regExp.pattern = "code retour du batch.*([0-9]{1,3})"
regExp.Global = True
Set Matches = reg.Execute("code retour du batch : 64")
Michel_M est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2007, 12h15   #5
Membre du Club
 
Avatar de zoullou
 
Inscription : janvier 2003
Messages : 130
Détails du profil
Informations forums :
Inscription : janvier 2003
Messages : 130
Points : 67
Points : 67
Arf j'ai fait une faute de frappe.

Voila le code corrigé :
Code :
1
2
3
4
5
6
7
8
9
regExp.pattern = "code retour du batch.*([0-9]{1,3})"
regExp.Global = True
Set Matches = regExp.Execute("code retour du batch : 64")
For Each Match In Matches
   Debug.Print "source >>", Match.Value
   For i = 0 To Match.SubMatches.Count - 1
      Debug.Print "[$" & i + 1 & "]", Match.SubMatches(i)
   Next i
Next Match
le ":" ext inclut dans le patern (il est inclu dans le ".*").
Le probleme est que si je met ce pattern : "code retour du batch.*([0-9]{2})", ça fonctionne mais le code retour est un chiffre entre 0 et 999. Le nombre de chiffre varie donc.

Merci pour ton aide.
zoullou est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h42.


 
 
 
 
Partenaires

Hébergement Web