Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1636 connectés 

  FORUM HardWare.fr
  Programmation
  Divers

  [RegExp]Exclure les points

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[RegExp]Exclure les points

n°698074
Noda
Posté le 13-04-2004 à 10:50:52  profilanswer
 

Salut j'ai une liste de chaine ki a à peu de chose pres cette tete :  
 
/
/toto/
/titi/popo/
/toto.titi
/toto.titi?popo=123&lolo=321
 
Je cherche en vain comme ne prendre ke les chaines NE comportant AUCUN "."
 
:'(
 
Help me je suis desesperé :/
 
Mirci :)


---------------
:D
mood
Publicité
Posté le 13-04-2004 à 10:50:52  profilanswer
 

n°698095
chaica
Posté le 13-04-2004 à 11:13:38  profilanswer
 

Faut lire un peu de docs :
http://www.p3b.org/tutor/oli/pytho [...] exp/a04ref
[^...]

n°698123
Noda
Posté le 13-04-2004 à 11:44:37  profilanswer
 

J'ai lu les docs, j'en suis pas à mes premieres regexp, si je demande c'est parce ke je trouve pas, et non par feignantise.
 
Le pb c'est pas de prendre j'usqu'au point c'est de virer toute la chaine contenant un point.
 
alors j'ai essayé plein de truc mais sans succes :/
 
genre : [^[:alnum:]+\.+[:alnum:]+]
 
et la je seche.


---------------
:D
n°698135
chaica
Posté le 13-04-2004 à 11:52:52  profilanswer
 

La question c'est : comment tu délimites ta chaîne qui contient le point? Comment tes chaînes sont elles délimitées? TU parles de plusieurs chaînes, comment tu les distingues entre elles?  

n°698138
Noda
Posté le 13-04-2004 à 11:56:28  profilanswer
 

C'est une liste donc je parcours ma liste et a chake fois j'ai une chaine.
 
Et si cette chaine contient un seul '.' je veux la faire sauter.


---------------
:D
n°698164
chaica
Posté le 13-04-2004 à 12:16:21  profilanswer
 

Ben au lieu de rechercher les chaines qui ont un point et de les éliminer,  tu fais une sélection des chaines qui ne contiennent pas  de points.

n°698172
Noda
Posté le 13-04-2004 à 12:20:32  profilanswer
 

chaica a écrit :

Ben au lieu de rechercher les chaines qui ont un point et de les éliminer,  tu fais une sélection des chaines qui ne contiennent pas  de points.


 
bah c'est exactement ce ke je veux faire mais j'y arrive pas  :cry:


---------------
:D
n°698212
chaica
Posté le 13-04-2004 à 12:52:40  profilanswer
 

Code :
  1. #!/usr/bin/python
  2. import re
  3. # la liste des chaines que l'on va etudier
  4. liste = ['hello.world','ca va la life','phrase.avec.un.point']
  5. print liste
  6. # notre regle
  7. regle = '\.'
  8. exp = re.compile( regle )
  9. # on parcourt la liste
  10. for phrase in liste:
  11. res = exp.findall( phrase )
  12. # si le resultat n est pas nul, on a un point dans notre phrase
  13. if res != [] :
  14.  index = liste.index(phrase)
  15.  # donc on supprime la phrase de notre liste
  16.  del liste[index]
  17. print liste


et en sortie j'ai :
chaica@desktop exos $ ./nopoint.py
['hello.world', 'ca va la life', 'phrase.avec.un.point']
['ca va la life']
 
donc on a bien éliminé les phrases sans point.


Message édité par chaica le 13-04-2004 à 12:55:06
n°698221
Noda
Posté le 13-04-2004 à 13:00:53  profilanswer
 

merci :)
 
le pb c'est ke je le fait en php et ke j'ai omis de le preciser :/


---------------
:D
n°698225
chaica
Posté le 13-04-2004 à 13:16:19  profilanswer
 

Oui enfin je t'ai donné l'idée, maintenant tu te débrouilles, hein. Avec les commentaire que j'ai mis tu peux avoir une idée de l'algo. Y'a pas marqué la poste :D


Message édité par chaica le 13-04-2004 à 13:18:40
mood
Publicité
Posté le 13-04-2004 à 13:16:19  profilanswer
 

n°698227
Noda
Posté le 13-04-2004 à 13:22:53  profilanswer
 

chaica a écrit :

Oui enfin je t'ai donné l'idée, maintenant tu te débrouilles, hein. Avec les commentaire que j'ai mis tu peux avoir une idée de l'algo. Y'a pas marqué la poste :D


 
Le pb c'est pas de faire un algo, c'etait de trouver une expression ki serait capable de faire ce ke je veux sans rien de plus ;)


---------------
:D
n°698232
anapajari
s/travail/glanding on hfr/gs;
Posté le 13-04-2004 à 13:36:11  profilanswer
 

Code :
  1. [^\.]


 
[edit sinon tu peux toujours faire un not match sur \. ]


Message édité par anapajari le 13-04-2004 à 13:37:44
n°698262
gilou
Modérateur
Modzilla
Posté le 13-04-2004 à 14:01:11  profilanswer
 

Noda a écrit :

merci :)
 
le pb c'est ke je le fait en php et ke j'ai omis de le preciser :/

Excellente occasion pour elargir ton horizon.
A+,

n°698600
Noda
Posté le 13-04-2004 à 20:07:23  profilanswer
 

anapajari a écrit :

Code :
  1. [^\.]


 
[edit sinon tu peux toujours faire un not match sur \. ]


 
ca ca prend aussi ce ki precede le point ;)


---------------
:D
n°698601
Noda
Posté le 13-04-2004 à 20:07:45  profilanswer
 

gilou a écrit :

Excellente occasion pour elargir ton horizon.
A+,


 
Je ne peux pas changer de langage ;)


---------------
:D
n°698736
anapajari
s/travail/glanding on hfr/gs;
Posté le 13-04-2004 à 23:50:56  profilanswer
 

Noda a écrit :


 
ca ca prend aussi ce ki precede le point ;)


non ça décrit un motif "tout sauf point" enfin bon si tu sais pas te servir d'une regex pourquoi ne pas faire simplement

Code :
  1. if (! strstr($tonString, "." ) )
  2. {
  3. ...
  4. }


n°698861
Noda
Posté le 14-04-2004 à 09:34:21  profilanswer
 

anapajari a écrit :


non ça décrit un motif "tout sauf point" enfin bon si tu sais pas te servir d'une regex pourquoi ne pas faire simplement

Code :
  1. if (! strstr($tonString, "." ) )
  2. {
  3. ...
  4. }


 


 
ton truc ca va sortir :  
 
/  
/toto/  
/titi/popo/  
/toto
/toto
 
Je l'ai testé ;)


---------------
:D
n°698897
anapajari
s/travail/glanding on hfr/gs;
Posté le 14-04-2004 à 10:14:50  profilanswer
 

tu peux me montrer le code que tu as utilisé pour voir...

n°702520
Noda
Posté le 19-04-2004 à 09:45:27  profilanswer
 

anapajari a écrit :

tu peux me montrer le code que tu as utilisé pour voir...


 
desolé pour le temps de reponses :/
 
pour l'instant j'utilise :  
 
ereg('^/([^.]*).*',$string,$chunk) ;
 
mais ca prends egalement ce k'il y'a avant le point.
 
Est il possible d'exclure un motif ?


---------------
:D
n°702803
Noda
Posté le 19-04-2004 à 14:43:21  profilanswer
 

J'ai evolué vers :  
 
preg_match('/(\w+(?!\.))/i',$ligne,$chunk) ;
 
j'ai preske ce ke je veux.
 
Sauf ke la ca ne vire k'un seul caractere avant le "."


---------------
:D
n°702847
anapajari
s/travail/glanding on hfr/gs;
Posté le 19-04-2004 à 15:16:28  profilanswer
 

Noda a écrit :


Je cherche en vain comme ne prendre ke les chaines NE comportant AUCUN "."


 
et bien je le redis encore un fois pas besoin de regex, je suppute que tu as un while ( ou autre boucle) qui te fait traiter tes lignes une à une:

Code :
  1. while ( ...)
  2. {
  3.   if (! strstr($ligne, "." ) )
  4.   {
  5.     // si tu as envie de l'annuler: $ligne='';  
  6.     continue
  7.   }
  8.     ... ce que tu faisais des chaines que tu conservais ...
  9. }


Message édité par anapajari le 19-04-2004 à 15:17:00
n°702901
Noda
Posté le 19-04-2004 à 15:33:28  profilanswer
 

anapajari a écrit :


 
et bien je le redis encore un fois pas besoin de regex, je suppute que tu as un while ( ou autre boucle) qui te fait traiter tes lignes une à une:

Code :
  1. while ( ...)
  2. {
  3.   if (! strstr($ligne, "." ) )
  4.   {
  5.     // si tu as envie de l'annuler: $ligne='';  
  6.     continue
  7.   }
  8.     ... ce que tu faisais des chaines que tu conservais ...
  9. }




 
je peux pas faire ca car j'ai tout de meme besoin de connaitre l'existence de ces lignes ... :/
 
Je vois pas trop comment expliker. je vaus pas ejecter totalement la ligne si y'a un point.
 
je veux garder le / du debut de ligne.
 
D'ou le preg_match ;)


---------------
:D
n°702949
anapajari
s/travail/glanding on hfr/gs;
Posté le 19-04-2004 à 16:00:44  profilanswer
 

voila là c'est déjà plus clair:

Code :
  1. preg_match('/(.*?)\/(([^\/]*)\.([^\/]*))/',$ligne,$chunk) ;


$chunk[1] contient tout le debut jusqu'a dernier /
$chunk[2] contient le nom de ton fichier
 
[edit: le i est inutile pour le preg dans ce cas la]


Message édité par anapajari le 19-04-2004 à 16:03:00
n°702961
Noda
Posté le 19-04-2004 à 16:09:19  profilanswer
 

Tu peux m'expliker un peu parce ke la je suis à la masse :/
 
en tout cas merci bcp


---------------
:D
n°703005
anapajari
s/travail/glanding on hfr/gs;
Posté le 19-04-2004 à 16:35:39  profilanswer
 

en gros ça fait:

Code :
  1. (.*?)  n'importe quoi 0 ou plus de fois jusqu'a
  2. \/     un slash suivi
  3. (      d'un motif composé de
  4. ([^\/]*)   un motif composé de n'importe quel caractère sauf slash 0 ou plus de fois suivi
  5.   \.        d'un point suivi
  6.   ([^\/]*)  un motif composé de n'importe quel caractère sauf slash 0 ou plus de fois suivi
  7. )   fin du motif


au niveau des ([^\/]*) les parenthèses ne sont pas indispensables mais te permettent de récuperer le nom de ton fichier $chunk[3] et son extension $chunk[4].
 
Attention, si tu peux avoir plusieurs points dans ton nom de fichier ( fichier.txt.old ) ça va merdouiller a ce niveau ...

n°703011
Noda
Posté le 19-04-2004 à 16:44:48  profilanswer
 

Merci
 
T'aurais pas un site ou kkchose dans ce genre à me conseiller ?


---------------
:D
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Divers

  [RegExp]Exclure les points

 

Sujets relatifs
[Java] Regexp pour sortir un chemin sans le nom de fichier[Regexp]Exclure une chaine d'une expression
RegExp[Regexp] Supprimer tous les espaces,\t,\n\r en dehors des balises
Encore du Regexp[PHP] petit pb avec une regexp
Une quote dans une quote [regexp][JS] urgent :'( problemes regexp !
- Aide pour script regexp - 
Plus de sujets relatifs à : [RegExp]Exclure les points


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR