Page 1 sur 1
[..] Recherche de caractères
Posté : jeu. 03 déc. 2015 22:49
par Shinai75
Bonjour,
Tout d'abord, bravo pour ce site qui est une véritable mine d'or.
Je débute sur Autoit et je suis confronté à un problème de recherche textuelle.
En clair, je dispose d'un fichier .txt avec beaucoup de texte et dans ce texte je souhaite récupérer des chaînes de caractères numériques préfixées par "/detail/" et suffixées par "?".
La difficulté réside dans le fait que le nombre de chiffres varie, par exemple
/detail/123? => je veux récupérer 123
/detail/123456? => je veux récupérer 123456
Auriez-vous un conseil ou un topic qui pourrait m'aider?
Merci par avance pour votre aide!
Excellente soirée
Re: [Recherche] : aide sur une recherche de caractères
Posté : jeu. 03 déc. 2015 22:56
par jguinch
Première page à lire :
http://www.autoitscript.fr/forum/viewto ... f=35&t=595
Ce sont les règles de présentation d'un message. Comme tu pourras le constater, le titre de ton message n'est pas vraiment conforme à cette règle.
Sinon, il faut que tu regardes du côté des fonctions StringMid / StringInStr qui devraient te permettre de faire ce que tu veux.
Re: [..] Aide sur une recherche de caractères
Posté : jeu. 03 déc. 2015 23:00
par Shinai75
Oups, je suis désolé, je viens de corriger
Merci pour votre réactivité et pour votre aide, je regarde l'aide en ce sens

Re: [..] Recherche de caractères
Posté : ven. 04 déc. 2015 07:04
par jchd
Tu peux faire comme ça :
Code : Tout sélectionner
#include <Array.au3>
Local $s = _
"baratin" & @CRLF & _
"/detail/123 => rien à récupérer car pas de ? à la fin" & @CRLF & _
"baratin123" & @CRLF & _
"/detail/123? => peux-tu récupérer 123?" & @CRLF & _
"baratin456" & @CRLF & _
"/detail/123456? => oui, ici tu vas récupérer 123456" & @CRLF & _
"baratin789" & @CRLF
Local $a = StringRegExp($s, "/detail/(\d+)\?", 3)
_ArrayDisplay($a)
Re: [..] Recherche de caractères
Posté : ven. 04 déc. 2015 14:15
par mikell
Le RegExp qui tue
Note qu'avec le texte de l'exemple de jchd _StringBetween (solution possible) n'est pas adapté
$a = _StringBetween($s, "/detail/", "?") => erreur
Re: [..] Recherche de caractères
Posté : ven. 04 déc. 2015 18:54
par Shinai75
Excellent, merci beaucoup !
je patinais avec un debut de code pas terrible :
StringRegExp('texte', '(?i)detail/(.*)?', $STR_REGEXPARRAYGLOBALMATCH)
merci, merci

Re: [..] Recherche de caractères
Posté : ven. 04 déc. 2015 19:14
par orax
Il fallait ajouter un
\ pour échapper le
?car, écrit comme ça, ? ne signifie pas le caractère "?" mais plutôt "0 ou 1 fois".
Re: [..] Recherche de caractères
Posté : ven. 04 déc. 2015 22:45
par mikell
Pas seulement... "(.*)" est 'greedy' donc ça va ramasser le max de caractères non-newline jusqu'au dernier "?" présent sur chaque ligne, et de plus le point ne permet pas de sélectionner juste les chiffres