Expression reguliere - je ne comprends pas - Perl - Programmation
Marsh Posté le 10-02-2008 à 08:34:28
Oui remplace ton "." par "[^>]" ou un truc dans le genre.
Marsh Posté le 06-03-2008 à 11:11:23
Bonjour, j'ai besoin de votre aide. Je dois extraire une chaîne de caractère depuis un fichier mais le probleme c'est que toute les élements d'une chaine sont espacés, ex: a r b r e c i t r o n.
Entre chaque expression il y a plusieurs espaces donc je voudrais supprimer l'espace lorsqu'il n'y a qu' un seul espace pour que "c i t r o n" devienne "citron".
J'ai essayer cela: $machaine =~ s/[\s]{1}//g mais sans succès.
Avez-vous une idée? Merci.
Marsh Posté le 06-03-2008 à 11:16:48
PakHG a écrit : Bonjour, j'ai besoin de votre aide. Je dois extraire une chaîne de caractère depuis un fichier mais le probleme c'est que toute les élements d'une chaine sont espacés, ex: a r b r e c i t r o n. |
Je parie une bière qu'ils ne sont pas espacés, mais que le fichier est tout simplement encodé en utf-16
Marsh Posté le 06-03-2008 à 11:17:53
en faite tu prend un espace qui n'est pas suivi par un autre espace?? mais je ne comprend pas le $1.
Marsh Posté le 06-03-2008 à 11:18:33
Florent comment je peux savori s'il est encodé en utf-16?? merci
Marsh Posté le 06-03-2008 à 11:21:06
PakHG a écrit : en faite tu prend un espace qui n'est pas suivi par un autre espace?? mais je ne comprend pas le $1. |
Quand tu matches dans un s///, toute la première partie matchée est remplacée par la seconde.
Si tu matches "un espace suivi d'un non-espace", les deux caractères disparaîtront si la seconde partie ne contient rien.
Je place donc le "caractère qui n'est pas un espace" entre parenthèse, pour en faire un match qui pourra être rappelé dans la seconde partie par $1 (un deuxième groupement sera $2, et ainsi de suite).
Donc, la regexp signifie :
- on recherche tout espace suivi d'un non-espace
- on place le non-espace en mémoire
- on remplace le match par ce qui a été placé en mémoire
Marsh Posté le 06-03-2008 à 11:25:46
d'accord je te remercie de ton explication. maintenant j'ai une autre petite question.
J'ai une ligne du style:
@ r M Print SERVEUR Èé¸jÅÅ´n©Ž9 77 HP.172.SERVEUR 12121 3 P LLZ Z
Je voudrais récupérer le nom de l'imprimante HP.172.SERVEUR et le nombre de page, ici 3. Le probleme étant que j'ai des impressions sur plusieurs imprimante dont une lexmark comment puis-je récupérer ces données parmis toutes les lignes? merci
Marsh Posté le 06-03-2008 à 11:34:53
en faite vu que toutes les imprimantes ont un nom finissant par serveur on pourrait récupérer tout ce qui se trouve avant serveur jusqu'au 1er espace
.
Marsh Posté le 06-03-2008 à 11:40:33
Le plus simple c'est de lire la documentation : http://perldoc.perl.org/perlretut.html
Marsh Posté le 10-02-2008 à 02:22:57
Hello,
Je ne comprends pas pourquoi le code ci dessous "MATCH" en Perl
J'ai deux fois la balise "<x>" et je veux matcher l'expression que quand elle n'y est qu'UNE seule fois. Qui a t-il de faux dans mon expression régulière ?
Merci.
Message édité par Christaline le 10-02-2008 à 02:26:51