[..] Recherche de caractères

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Shinai75
Niveau 1
Niveau 1
Messages : 3
Enregistré le : jeu. 03 déc. 2015 22:42
Status : Hors ligne

[..] Recherche de caractères

#1

Message 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
Modifié en dernier par Shinai75 le jeu. 03 déc. 2015 23:04, modifié 2 fois.
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [Recherche] : aide sur une recherche de caractères

#2

Message 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.
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Shinai75
Niveau 1
Niveau 1
Messages : 3
Enregistré le : jeu. 03 déc. 2015 22:42
Status : Hors ligne

Re: [..] Aide sur une recherche de caractères

#3

Message 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 :D
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Recherche de caractères

#4

Message 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)
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Recherche de caractères

#5

Message par mikell »

Le RegExp qui tue :mrgreen:
Note qu'avec le texte de l'exemple de jchd _StringBetween (solution possible) n'est pas adapté
$a = _StringBetween($s, "/detail/", "?") => erreur
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Shinai75
Niveau 1
Niveau 1
Messages : 3
Enregistré le : jeu. 03 déc. 2015 22:42
Status : Hors ligne

Re: [..] Recherche de caractères

#6

Message par Shinai75 »

Excellent, merci beaucoup !
je patinais avec un debut de code pas terrible :

StringRegExp('texte', '(?i)detail/(.*)?', $STR_REGEXPARRAYGLOBALMATCH)

merci, merci :D
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] Recherche de caractères

#7

Message par orax »

Il fallait ajouter un \ pour échapper le ?

Code : Tout sélectionner

(?i)detail/(.*)[b]\[/b]?
car, écrit comme ça, ? ne signifie pas le caractère "?" mais plutôt "0 ou 1 fois".
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Recherche de caractères

#8

Message 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
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Répondre