Page 1 sur 1
Petite brouille avec les expressions régulières
Posté : 27 nov. 2009, 23:40
par Anémone
Bonjour à toi,
qui me fait l'honneur et le plaisir de penser pouvoir m'aider...
Je ne crois pas que mon cas soit incurable; voilà le problème:
J'essaie d'extraire d'une chaine toutes les accurences d'une sous chaine qui a pour caractéristiques de commencer par un point virgule, de se terminer par un point d'interrogation et de contenir entre ces 2 caractères tout ce qu'elle veut de chiffres et de lettres y compris le signe égal et le signe point. Je code ceci:
$chaine = preg_replace("^;*\?$","",$chaine);
et ça ne change rien à ma chaîne....
Merci!
Thierry
Re: Petite brouille avec les expressions régulières
Posté : 28 nov. 2009, 00:26
par Dr@ke
Tu as oublié un point avant le
*.
Le tout entouré de préférence dans ton exemple de parenthèses, donc:
(.*)
Car:
. = 1 caractères et n'importe lequel
* = nombre indéfini.
donc l'association des deux:
.* = nombre indéfini de caractères et n'importe lesquels

Re: Petite brouille avec les expressions régulières
Posté : 28 nov. 2009, 01:01
par Anémone
Bonsoir Drake,
merci, mais....
Je fais donc
$src = preg_replace("^;(.*)\?$","",$src);
et j'obtiens ...une page blanche.
J'ai bien vérifié que la chaine à traiter ne contenait pas de ; avant celui à partir duquel effectuer le remplacement, le problème ne vient donc pas de là.
Une autre idée...?
Thierry
Re: Petite brouille avec les expressions régulières
Posté : 28 nov. 2009, 01:10
par Dr@ke
Test en remplaçant le point virgule par un autre caractère, si ca ne bug plus, c'est que tu dois enlever des points virgules nécessaires a des fins d'instructions...
Re: Petite brouille avec les expressions régulières
Posté : 28 nov. 2009, 01:23
par Anémone
Pareil...
Re: Petite brouille avec les expressions régulières
Posté : 28 nov. 2009, 01:37
par Dr@ke
Oui désolé, je suis bête.
A l'inverse
iger()... la syntaxe de
preg_replace() et
preg_match().. demande l'utilisation de
délimiteurs:
Comme ceci:
$src = preg_replace("#^;(.*)\?$#", "", $src);
donc ici les
délimiteurs sont les
#
(Ce n'est peut-être pas le bon terme, mais bon
)
Ensuite tu peux utiliser des simples guillements, une bonne habitude a prendre, enfin ça c juste mon avis:
$src = preg_replace('#^;(.*)\?$#', '', $src);
http://php.net/manual/fr/function.preg-replace.php
Re: Petite brouille avec les expressions régulières
Posté : 28 nov. 2009, 01:45
par Dr@ke
Juste un truc:
Il faut enlever ^ et $ pour que cela cherche dans tout le texte.
Sinon
$src devra absolument commencer par
; et finir par
?
Car:
^ = début de la chaine
$ = fin de la chaine
Donc:
$src = preg_replace('#;(.*)\?#', '', $src);
Clique sur résolut si tout est ok

Re: Petite brouille avec les expressions régulières
Posté : 28 nov. 2009, 02:06
par Anémone
Parfait! Ça marche, merci beaucoup.
Je suis un peu miro, sans doute, mais je ne trouve pas de bouton "résolu" sur lequel cliquer...
Et enfin, dans la rubrique "votre avis nous intéresse", pourquoi privilégier les apostrophes aux guillemets? Il n'y a rien tant difficile à se défaire qu'une mauvaise habitude.
Cordialement,
Thierry
Re: Petite brouille avec les expressions régulières
Posté : 28 nov. 2009, 02:16
par Dr@ke
Car par exemple entre les doubles guillemets, les variables sont exécutées...
Donc par habitude autant utiliser les simples guillemets partout, et utiliser les doubles quand on pas le choix ou que cela est plus simple...
Sinon pour marquer résolut, c'est la petite coche verte en haut là
