Page 1 sur 1
Expression Reguliere
Posté : 12 déc. 2010, 09:05
par TomsDEV
Bonjour,
Je ne demande pas souvent d'aide, mais la je bloque.
Voici mon probleme:
J'ai une chaine de caratere qui contient des valeures du type: "Ur r". Dans cette, il faut que je remplace r par une variable. Il ne faut pas toucher au caractere "r" precede par U.
J'imagine qu'il faut faire ca avec preg_replace, mais jusque la, je n'ai reussi a faire en sorte que la regle avec le U soit respectee.
Merci d'avance pour votre aide.
Re: Expression Reguliere
Posté : 12 déc. 2010, 10:20
par epommate2
echo preg_replace("/([^U])r/","$1toto","rblablar Ur blublu r r r Ur");
Argh, ca marche pas si la chaine commence par un r ...
Re: Expression Reguliere
Posté : 12 déc. 2010, 10:36
par TomsDEV
Merci pour ta reponse epommate2.
C'est justement mon probleme, je n'arrive pas a comprendre tous les cas dans une seule regexp.
Pour le moment j'en ai donc deux, celle que tu viens de me donner, puis une dans le cas ou r est le premier caractere, mais il est possible de faire mieux j'imagine donc si quelqu'un a une idee, je reste preneur.
Re: Expression Reguliere
Posté : 12 déc. 2010, 10:51
par epommate2
Et ça :
echo preg_replace("/^r|([^U])r/","$1toto","rblablar Ur blublu r r r Ur");
Re: Expression Reguliere
Posté : 12 déc. 2010, 11:03
par TomsDEV
Ah oui en effet il fallait y penser.
Merci a toi

Re: Expression Reguliere
Posté : 12 déc. 2010, 22:38
par stealth35
l'expression correct serait plus :
echo preg_replace('/(?<!U)r/','toto','rblablar Ur blublu r r r Ur');
Re: Expression Reguliere
Posté : 13 déc. 2010, 06:36
par epommate2
Je vois bien que c'est plus joli, mais en quoi est-ce plus correct ? Je n'arrive pas a voir des des mots qui match différemment ?
Re: Expression Reguliere
Posté : 13 déc. 2010, 10:41
par stealth35
Je vois bien que c'est plus joli, mais en quoi est-ce plus correct ? Je n'arrive pas a voir des des mots qui match différemment ?
parce que t'as une condition et un groupement alors qu'une assertion suffis
