regexp

regexp - Programmation

Marsh Posté le 17-02-2002 à 02:37:14    

c dure a comprendre les regexp :( apres avoir lu tout ce que je pouvais j'y pige toujours pas grand chose
 
$string="pif paf pof";
 
comment retourné paf qui est entre "pif " et " pof" donc svp  :jap:

Reply

Marsh Posté le 17-02-2002 à 02:37:14   

Reply

Marsh Posté le 17-02-2002 à 09:39:10    

en quel langage? perl? php? emacs? sed? awk?
A+,


---------------
There's more than what can be linked! --  Le capitaine qui ne veut pas obéir à la carte finira par obéir aux récifs. -- No jab ? No job ! -- (╯°□°)╯︵ ┻━┻
Reply

Marsh Posté le 17-02-2002 à 12:15:03    

en php mais je pensait que le pattern etait ommun a tout les language

Reply

Marsh Posté le 17-02-2002 à 15:30:41    

$string=preg_replace("/pif(.+?)pof /","pif\\1pof",$string);

 

[jfdsdjhfuetppo]--Message édité par skylight--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 17-02-2002 à 18:08:57    

ok je vais tester thx sky mais ce qui m'interesse au si c'est de comprendre, pourrais tu expliciter ta regexp, genre "je prends ce kil y a avant ..."

Reply

Marsh Posté le 17-02-2002 à 18:26:37    

en gros :
$string=preg_replace("/pif(.+?)pof /","pif\\1pof",$string);  
 
je recherche tout ce qui se trouve entre un pif et un paf
donc je met pif(.+?)paf
(.+?) indique n'importe quelle chaine de caractère
 
maintenant, une fois que l'expression régulière l'aura trouvée, je met ce qu'elle dois remplacer
 
donc je met "\\1"
 
car tout ce ke la reg expr trouve, hop je le recupère dans \\1
 
c tout :)

Reply

Marsh Posté le 17-02-2002 à 18:33:14    

:jap: j'etait pas du tout dans un raisonnement comme ca, je vais m'entrainer

Reply

Marsh Posté le 17-02-2002 à 20:48:46    

bon ca marche pas... mais je vais voir dans la meme logique

Reply

Marsh Posté le 17-02-2002 à 21:56:01    

bon je blocque toujours mais le truc de fly m'a aider....
par contre exemple  
$string="pif paf pof pof";
avec le pattern "pif(.+)pof" je recupere "paf pof" alors qu' j'aurais voulut recuperer seulement paf voyez c'que j'veut dire?

Reply

Marsh Posté le 17-02-2002 à 22:33:24    

fo mettre  
(.+?)

Reply

Marsh Posté le 17-02-2002 à 22:33:24   

Reply

Marsh Posté le 17-02-2002 à 22:59:32    

bah je me sert de ca
http://www.phpinfo.net/?p=prog&rub=regex-form
et les deux c pareil... en fait si j'ai compris c soir + soit ?
 
"ab*": les chaînes contenant un a suivi de zéro, un, ou plusieurs b ("a", "ab", "abbb", etc.);  
"ab+": idem, mais avec au moins 1 b derrière le a ("ab", "abbb", etc.);  
"ab?": il doit y avoir un b ou non après le a;  
 
donc ".+" c'est n'importe kel caracter en nombre infini

Reply

Marsh Posté le 17-02-2002 à 23:03:44    

non t'a pas compris :)
 
met (.+?)

Reply

Marsh Posté le 17-02-2002 à 23:07:24    

bah ca marche mùais ca retourne "paf pof" pour "pif paf pof pof"

Reply

Marsh Posté le 17-02-2002 à 23:16:43    

bah non online ca marche po : REG_BADRPT: drepetition-operator operand invalid

 

[jfdsdjhfuetppo]--Message édité par speedyop--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 17-02-2002 à 23:26:42    

$string=preg_replace("/pif(.+?)pof/si","\\1",$string);  
???

Reply

Marsh Posté le 18-02-2002 à 00:01:49    

Quel est l'interet d'un (.+?) par rapport a un (.*)  
un +? equivaut a un * non?
A+,


---------------
There's more than what can be linked! --  Le capitaine qui ne veut pas obéir à la carte finira par obéir aux récifs. -- No jab ? No job ! -- (╯°□°)╯︵ ┻━┻
Reply

Marsh Posté le 18-02-2002 à 00:11:31    

Citation :

$string=preg_replace("/pif(.+?)pof/si","\\1",$string);  


Pas bon comme reponse: ca incorpore les blancs dans le pattern solution, c'est pas ce qu'il voulait.
$string=preg_replace("/pif ([^\ ]*) pof/si","\\1",$string);  
ca devrait etre un poil mieux.
Je connais pas la syntaxe exacte de PHP pour les blancs, mais ici, ([^\ ]*) signifie tout caractere sauf le caractere blanc.
Et ceci serait sans doute mieux:
$string=preg_replace("/pif([\t\ ]+)([^\t\ ]*)([\t\ ]+)pof/si","\\2",$string);  
A+


---------------
There's more than what can be linked! --  Le capitaine qui ne veut pas obéir à la carte finira par obéir aux récifs. -- No jab ? No job ! -- (╯°□°)╯︵ ┻━┻
Reply

Marsh Posté le 18-02-2002 à 00:16:20    

c kan meme  :eek2: les regexp

Reply

Marsh Posté le 18-02-2002 à 00:39:04    

euh ca veut dire koi "/"?

Reply

Marsh Posté le 18-02-2002 à 01:02:01    

bon j'ai trouvé  :sweat:  
 
eregi("<p>([^>]*)<\/p>",$page_tbl[$line_nb+1],$reg);
 
et je recupere dans $reg[1]; la valeur comprise entre <p> et le premier </p> suivant
 
ca marche pour "<p>texte</p><p>suite</p>"
 
pfff :sweat:
 
bon maintenant c'est de pouvoir eliminer une string compete du paterne et pas seulemnt un caractere avec [*>] je dit que je ne veut pas de ">" mais si je ne veut pas uniquement de </p>?
 
car ca ne marche pas bien avec ca marche pour "<p>texte<b>dfezfez</b>fezf</p><p>suite</p>" par exemple...

 

[jfdsdjhfuetppo]--Message édité par speedyop--[/jfdsdjhfuetppo]

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed