regexp - Programmation
Marsh Posté le 17-02-2002 à 09:39:10
en quel langage? perl? php? emacs? sed? awk?
A+,
Marsh Posté le 17-02-2002 à 12:15:03
en php mais je pensait que le pattern etait ommun a tout les language
Marsh Posté le 17-02-2002 à 15:30:41
$string=preg_replace("/pif(.+?)pof /","pif\\1pof",$string);
[jfdsdjhfuetppo]--Message édité par skylight--[/jfdsdjhfuetppo]
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 ..."
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
Marsh Posté le 17-02-2002 à 18:33:14
j'etait pas du tout dans un raisonnement comme ca, je vais m'entrainer
Marsh Posté le 17-02-2002 à 20:48:46
bon ca marche pas... mais je vais voir dans la meme logique
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?
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
Marsh Posté le 17-02-2002 à 23:07:24
bah ca marche mùais ca retourne "paf pof" pour "pif paf pof pof"
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]
Marsh Posté le 17-02-2002 à 23:26:42
$string=preg_replace("/pif(.+?)pof/si","\\1",$string);
???
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+,
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+
Marsh Posté le 18-02-2002 à 01:02:01
bon j'ai trouvé
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
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]
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