Page 1 sur 1
Expression régulière : Tout sauf une chaine
Posté : 29 sept. 2011, 16:06
par jonjojo007
Bonjour,
Je cherche à faire une expression régulière ou je recherche tout sauf une chaine de caractère précise.
[^abc] signifie tout sauf a ou b ou c or moi j'aimerai tout sauf la chaine abc.
Est ce que c'est possible à faire ?
En javascript avec les reg exp à priori faut faire ^(!?abc$) mais ça fonctionne pas en php :/
Merci !
Re: Expression régulière : Tout sauf une chaine
Posté : 29 sept. 2011, 16:13
par popy
'/^(!?abc)$/'
Re: Expression régulière : Tout sauf une chaine
Posté : 29 sept. 2011, 17:12
par jonjojo007
Merci mais ça pose un soucis, car je dois dire qu'il doit y avoir plusieurs caractères et mettre un + après le $ fait une erreur. Entourer le tout en parenthèse ne fait pas le remplacement :/
Ce que je veux :
tout sauf la chaine url
Voila l'expression entière
$chaine = preg_replace('&\
*)\]^(!?url)$\[/url\]&ie', <a href="'\\1">\\3</a> ', $chaine);
Ma chaine de test : [url=http://www.exemple.com/aze[test]aze]test
Actuellement ça ne fait pas le remplacement.
Ce que j'utilise pour l'instant mais qui interdit de mettre des crochets dans le texte du lien c'est ([^\[]) a la place de ^(!?url)$
Merci.
Re: Expression régulière : Tout sauf une chaine
Posté : 29 sept. 2011, 18:05
par popy
\\$ alors. Parce que $ c'est un caractère spécial
Re: Expression régulière : Tout sauf une chaine
Posté : 29 sept. 2011, 20:30
par jonjojo007
Y'a rien à faire ça fonctionne pas :/ J'arrive pas a lui dire tout sauf la chaine "url"
$chaine = "aze-url-aze";
$chaine = preg_replace('/aze-^(!?url)$-aze/', 'good', $chaine); => match pas
$chaine = preg_replace('/aze-^(!?url)$+-aze/', 'good', $chaine); => Compilation failed
$chaine = preg_replace('/aze-^(!?url)\\$+-aze/', 'good', $chaine); => match pas
$chaine = preg_replace('/aze-^(!?url$)+-aze/', 'good', $chaine); => match pas
$chaine = preg_replace('/aze-[^url]+-aze/', 'good', $chaine); => ça fait différent de u OU r OU l au lieu de différent de url
$chaine = preg_replace('/aze-[^(^url$)]+-aze/', 'good', $chaine); => match pas
Je désespère :/
Re: Expression régulière : Tout sauf une chaine
Posté : 02 oct. 2011, 17:22
par jonjojo007
Up !
Toujours personne qui a la solution ?
Je cherche à dire en expression régulière : Tout sauf une suite de caractère.
Exemple /([^url]+)/ signifie tout sauf u OU r OU l mais moi je veux tout sauf la chaine url.
Merci !
Re: Expression régulière : Tout sauf une chaine
Posté : 03 oct. 2011, 09:21
par soycd
Utilise une fonction de callback avec preg_replace_callback()