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 :wink: