Rappeler une sous chaine dans une expression rationelle [Perl] - Perl - Programmation
Marsh Posté le 06-04-2004 à 03:55:16
Déjà, écrit \d au lieu de [0-9] et ça sera plus clair. Ensuite pour ton problème (si j'ai bien compris ce que tu veux), il suffit de récupérer le résultat de ta regexp dans un tableau : if (@a = /ton_truc_imbitable/), puis à accéder $a[$col_num].
Marsh Posté le 06-04-2004 à 09:22:33
c'est pas bo
Code :
|
et tu y devrait y voir un peu plus clair ( si elle marche )
Marsh Posté le 06-04-2004 à 11:20:13
Salut,
Merci pour vos reponses. Oui, c pas bo ce truc mais ca reste comphréensible car loin d'etre un perl wizard je suis plutot un perl newbie. Cependant une petite question : comment recuperer le resultat de l'expression rationelle dans un tableau ?
Il suffit d'affecter le resultat à un tableau ?
Merci,
Joa
Marsh Posté le 06-04-2004 à 11:36:34
oui matafan ayant oublié 2/3 caractères je pense
Code :
|
Marsh Posté le 06-04-2004 à 18:05:09
Ouai pourkoi tu utilise pas \d comme le dit Anapajai?
mais ya une petite erreur dans son adaptation de ta regexp:
Code :
|
et donc effectivement pour recuperer tout ca tu fait:
Code :
|
(ya pas besoin de rajouter "$_ =~", c'est implicite)
sinon pour ta regexp de depart, t'es certain qu'elle marche?
pasque les \S au milieu d'une expressionc 'est jamais tres bon signe
Marsh Posté le 28-04-2004 à 08:02:44
Il y a dans le topic "Outils pour bien programmer" un excellent outil pour tester ses expressions régulières (pour windows).
Marsh Posté le 05-04-2004 à 17:57:40
Salut,
Voici le bout de coede. On ouvre un fichier et on regarde chaque ligne pour voir si elle correspond au pattern suivant. Ensuite, on veut recuperer une partie de cette chaine dans une variable. Cette partie est entouree de parenthese. Mais la partie qu'on veut recuperer peut changer en fonction des desideratas de l'utilisateur. Comment alors faire comprendre a perl qu'il faut qu'il aille chercher par exemple dans le contexte en dessous la variable $2 ou $3 sachant que l'on a $col_num qui represente le nombre de la colonne a choper. En fait, j'ai pensé à un truc du style de ce que j'ai mis en dessous, ou alors "\$"."$col_num" mais ca marche pas. Une idée ?
++
joa
if ($_=~ /^([0-9]*\.[0-9]+)\t(-?[0-9]*\.[0-9]+\S?-?[0-9]?)\t(-?[0-9]*\.[0-9]+\S?-?.[0-9]?)\t(-?[0-9]*\.[0-9]+\S?-?[0-9]?)\t(-?[0-9]*\.[0-9]+\S?-?[0-9]?)\t?(-?[0-9]*\.[0-9]+\S?-?[0-9]?)?\t?(-?[0-9]*\.[0-9]+\S?-?[0-9]?)?/ ) {
}
push(@tempModesArray,$"$col_num" );