[R] Recupérer un nombre dans une chaine

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
touslesmatins
Niveau 6
Niveau 6
Messages : 211
Enregistré le : dim. 15 févr. 2009 01:08
Status : Hors ligne

[R] Recupérer un nombre dans une chaine

#1

Message par touslesmatins »

Bonjour,
Je souhaite récuperer un nombre dans une chaine et je bloque.
Voici la chaine : "gtsystsy_stmfx_dssd_45_bb.pdf" ou encore "ggggstsy_kllfx_mpsd_545_bb.pdf"
La question comment puis je recuperer le 45 ou dans le 2e exemple le 545
Merci pour votre aide
Modifié en dernier par touslesmatins le lun. 09 déc. 2013 23:16, modifié 1 fois.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Recupérer un nombre dans une chaine

#2

Message par Tlem »

"\d+" avec StringRegExp(). ^^
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Recupérer un nombre dans une chaine

#3

Message par jguinch »

Pour exposer la réponse de Tlem :

Code : Tout sélectionner

$chaine = "gtsystsy_stmfx_dssd_45_bb.pdf"
$num = StringRegExpReplace($chaine, "[^\d]", "") ; Remplace [b]tout ce qui n'est pas un chiffre[/b] par [b]rien[/b]
MsgBox(0, "", $num)
Attention, il faut tout de même penser à tous les cas de figure. Par exemple, est-ce qu'il est possible de rencontrer un chaîne du style gtsystsy09_stmfx_dssd_45_bb.pdf ? Dans ce cas, il faudra s'y prendre autrement (utiliser StringRegExp pour généré un tableau).
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Recupérer un nombre dans une chaine

#4

Message par mikell »

Heu ...

Code : Tout sélectionner

$chaine = "gtsystsy_09_stmfx_dssd_123_45_bb.pdf"
$num = StringRegExpReplace($chaine, '.+_(\d+).+', "$1") ; récupère le [b]dernier [/b]nombre précédé par un underscore
MsgBox(0, "", $num)
:mrgreen:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Recupérer un nombre dans une chaine

#5

Message par jguinch »

@mikell : la supposition que je faisais voulait simplement mettre en évidence que si on rencontre plusieurs suites de chiffres dans le nom du fichier, on ne sait pas ce qu'il faut récupérer...
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Recupérer un nombre dans une chaine

#6

Message par mikell »

Ta supposition est totalement justifiée, reste dans ce cas que : ou bien la position du nombre à récupérer est constante dans le nom de fichier auquel cas un regexpreplace suffira, ou elle ne l'est pas et là même un tableau ne servira pas à grand'chose :roll:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
touslesmatins
Niveau 6
Niveau 6
Messages : 211
Enregistré le : dim. 15 févr. 2009 01:08
Status : Hors ligne

Re: [..] Recupérer un nombre dans une chaine

#7

Message par touslesmatins »

Merci je regarde tout ça...
touslesmatins
Niveau 6
Niveau 6
Messages : 211
Enregistré le : dim. 15 févr. 2009 01:08
Status : Hors ligne

Re: [R] Recupérer un nombre dans une chaine

#8

Message par touslesmatins »

Un grand merci Tlem & Jguinch, c'est tout simplement parfait.
;) :D
aulus
Niveau 7
Niveau 7
Messages : 424
Enregistré le : lun. 25 mars 2013 19:38
Status : Hors ligne

Re: [R] Recupérer un nombre dans une chaine

#9

Message par aulus »

Bonjour,

Je lis, plus haut : .+_(\d+).+', "$1"

Connaissez-vous un site ou une page qui explique ce langage cabalistique ? Il m'a l'air rudement efficace dans sa concision...
Avatar du membre
TT22
Membre émérite
Membre émérite
Messages : 1566
Enregistré le : lun. 18 avr. 2011 15:21
Localisation : La Quatrième Dimension
Status : Hors ligne

Re: [R] Recupérer un nombre dans une chaine

#10

Message par TT22 »

Cordialement,
TT22
aulus
Niveau 7
Niveau 7
Messages : 424
Enregistré le : lun. 25 mars 2013 19:38
Status : Hors ligne

Re: [R] Recupérer un nombre dans une chaine

#11

Message par aulus »

Merci,

Ca fait un peu peur au premier abord... Voilà de quoi s'occuper les longs jours d'hiver !
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [R] Recupérer un nombre dans une chaine

#12

Message par mikell »

" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [R] Recupérer un nombre dans une chaine

#13

Message par jguinch »

... et sans oublié le petit tuto de mikell :wink:
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
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: [R] Recupérer un nombre dans une chaine

#14

Message par jchd »

Pour les anglophones, une vidéo de présentation par une spécialiste du web.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [R] Recupérer un nombre dans une chaine

#15

Message par Tlem »

Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Répondre