Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/12/2006, 10h48   #1
Invité régulier
 
Inscription : décembre 2004
Messages : 61
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 61
Points : 8
Points : 8
Envoyer un message via MSN à fabrisss
Par défaut Encore un problème d'expression régulière

Bonjour,

Je cherche une expression régulière qui accepte tout ce qui ne commence pas par la chaine "riri". J'essaie ceci mais mon texte est refusé alors qu'il devrait être accepté.

Code :
1
2
3
4
 
$texte = "fifi et loulou";
$regexp = "/^(^riri)/";
echo preg_match($regexp, $texte);
J'ai également testé d'autres variantes mais en vain...

Avez-vous d'autres suggestions ? Merci pour ce forum très efficace,

Fabrisss
fabrisss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2006, 11h47   #2
Membre habitué
 
Avatar de elvan49
 
Laurent
Développeur Web
Inscription : octobre 2006
Messages : 226
Détails du profil
Informations personnelles :
Nom : Laurent
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : octobre 2006
Messages : 226
Points : 141
Points : 141
Envoyer un message via Skype™ à elvan49
Citation:
Envoyé par fabrisss
.../...

Code :
1
2
3
4
 
$texte = "fifi et loulou";
$regexp = "/^(^riri)/";
echo preg_match($regexp, $texte);
Là il me semble que tu lui donnes und ouble exception donc la seconde annule la première essaie :
A+ courage
elvan49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2006, 11h52   #3
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Une assertion négative avant semble faire l'affaire :
Code :
1
2
3
$texte = "rifi et loulou";
$regexp = "/^(?!riri)/";
echo preg_match($regexp, $texte);
Mais dans ce cas précis strpos peut servir à implémenter un équivalent :
Code :
1
2
3
4
$texte = "rifi et loulou";
if (strpos($texte, 'riri') !== 0) { // On ne considère pas le cas où elle n'est pas trouvée
    echo 'Ne commence pas par riri';
}

Julp.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2006, 12h24   #4
Invité régulier
 
Inscription : décembre 2004
Messages : 61
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 61
Points : 8
Points : 8
Envoyer un message via MSN à fabrisss
Evidemment, je dois résoudre mon problème avec une expression régulière et pas avec un strpos ;-)

Je ne connaissais pas les assertions mais je vais les découvrir via le tuto,

Merci julp : votre solution fonctionne parfaitement.

Fabrisss
fabrisss est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h15.


 
 
 
 
Partenaires

Hébergement Web