Aide et conseils concernant AutoIt et ses outils.
jpascal
Niveau 6
Messages : 239 Enregistré le : jeu. 16 oct. 2008 16:21
Status :
Hors ligne
#1
Message
par jpascal » mer. 28 juil. 2021 12:18
Bonjour,
Désolé pour le titre peu explicite.
Je souhaite récupérer des données séparées par un motif, par exemple SEP1, SEP2, SEPx
J'y arrive seulement si le séparateur est un caractère (dans mon exemple µ).
Pouvez-vous m'aider ?
Test
( ) Func Test
( ) Local $aRegExp [ 0 ] Local $sTxt = '' $sTxt = '111dfs11hyt1µ2222rf2ge22µ3r3v33ds33µ44ggrt44v44ee' $aRegExp = StringRegExp ( $sTxt , 'µ([^µ]*)' , $STR_REGEXPARRAYGLOBALMATCH ) _ArrayDisplay ( $aRegExp ) ; NE fonctionnent PAS $sTxt = '111dfs11hyt1SEP1e22rf2ge22SEP23v33ds33SEP3dggrt44v44ee' $aRegExp = StringRegExp ( $sTxt , 'SEP\d(.*?)SEP\d' , $STR_REGEXPARRAYGLOBALMATCH ) _ArrayDisplay ( $aRegExp ) $aRegExp = StringRegExp ( $sTxt , '(?<=SEP\d).*' , $STR_REGEXPARRAYGLOBALMATCH ) _ArrayDisplay ( $aRegExp ) $aRegExp = StringRegExp ( $sTxt , '(?:SEP\d).*' , $STR_REGEXPARRAYGLOBALMATCH ) _ArrayDisplay ( $aRegExp ) $aRegExp = StringRegExp ( $sTxt , '(?<=SEP\d)(.*?)(?!SEP)' , $STR_REGEXPARRAYGLOBALMATCH ) _ArrayDisplay ( $aRegExp ) EndFunc ;==>Test
Modifié en dernier par
jpascal le mer. 28 juil. 2021 16:27, modifié 1 fois.
AutoIt 3.3.16.1 - AutoIt3Wrapper 21.316.1639.1
jchd
AutoIt MVPs (MVP)
Messages : 2282 Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status :
Hors ligne
#2
Message
par jchd » mer. 28 juil. 2021 14:43
Et comme ça ?
Code : Tout sélectionner
Test()
Func Test()
Local $sTxt = '111dfs11hyt1SEP1e22rf2ge22SEP23v33ds33SEP3dggrt44v44ee'
Local $aRegExp = StringRegExp($sTxt, '(.+?)(?:SEP\d|$)', $STR_REGEXPARRAYGLOBALMATCH)
_ArrayDisplay($aRegExp)
EndFunc ;==>Test
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
jpascal
Niveau 6
Messages : 239 Enregistré le : jeu. 16 oct. 2008 16:21
Status :
Hors ligne
#3
Message
par jpascal » mer. 28 juil. 2021 15:21
Désolé mais ma requête était ambigüe et la syntaxe proposée (?< vous a induit en erreur.
Je souhaite récupérer tous les groupes après le "SEPx" donc :
- e22rf2ge22
- 3v33ds33
- dggrt44v44ee
J'ai tenté ces différents motifs sans succès :
(?>SEP\d)(.+?)
(?>SEP\d)(.+)
(?:SEP\d)(.+?)
(?:SEP\d)(.+)
Et avec celui-ci il me manque logiquement le dernier groupe : (?<=SEP\d)(.+?)(?:SEP)
AutoIt 3.3.16.1 - AutoIt3Wrapper 21.316.1639.1
jchd
AutoIt MVPs (MVP)
Messages : 2282 Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status :
Hors ligne
#4
Message
par jchd » mer. 28 juil. 2021 16:12
Je souhaite récupérer des données séparées par un motif, par exemple SEP1, SEP2, SEPx
J'ai répondu à cette contrainte-là.
Maintenant pour la nouvelle contrainte, on peut faire ça :
Code : Tout sélectionner
Test()
Func Test()
Local $sTxt = '111dfs11hyt1SEP1e22rf2ge22SEP23v33ds33SEP3dggrt44v44ee'
Local $aRegExp = StringRegExp($sTxt, '(?<=SEP\d).+?(?=SEP\d|$)', $STR_REGEXPARRAYGLOBALMATCH)
_ArrayDisplay($aRegExp)
EndFunc ;==>Test
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
jpascal
Niveau 6
Messages : 239 Enregistré le : jeu. 16 oct. 2008 16:21
Status :
Hors ligne
#5
Message
par jpascal » mer. 28 juil. 2021 16:25
Cela fonctionne ! C'est magique !
Comme un imbécile, je ne comprenais pas pourquoi cela fonctionnait avec $ car focalisé sur les assertions, j'ai confondu $ et ^
Sachez que cette "fonctionnalité" me manquait jusqu'à présent. Grâce à vous je vais pouvoir améliorer mes scripts.
Je vous dis un grand Merci.
AutoIt 3.3.16.1 - AutoIt3Wrapper 21.316.1639.1