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 22/12/2010, 13h55   #1
 
Inscription : mars 2008
Messages : 36
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 36
Points : -1
Points : -1
Par défaut Expressions regulieres PHP

bonjour

je cherche à extraire une chaîne de caractères inclue dans une autre chaîne pour cela j'utilise la fonction preg_match_all qui semble donner de bon résultats, cependant cette fonction utilise un motif exprimé avec les expressions régulières pour extraire la chaîne

mon problème est que je n'arrive pas à trouver ce motif pour le cas suivant:

dans cet exemple j'ai ma chaîne :
Citation:
.R
text text text text
text text text text
.G
je souhaite extraire la chaîne
Citation:
"text text text text ...."
avec les saut de lignes

j'ai utilise ce motif mais ça donne pas de bon résultat:
Code php :
1
2
 
$motif=''^(\.R)\s.+(\.G)$'';

quel est le motif qu'on doit utilise?

Merci d'avance.
ouss747 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2010, 14h50   #2
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
Outre l'erreur de syntaxe et un ancrage inadapté (si on s'en réfère au choix de preg_match_all), il manque les séparateurs et le modificateur s pour que le métacaractère point inclut \n. Et, normalement, rendre le motif non gourmand.
Code :
$motif = '~\.R(.+)\.G~sU'; # ou ~\.R(.+?)\.G~s
julp est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 22/12/2010, 16h04   #3
 
Inscription : mars 2008
Messages : 36
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 36
Points : -1
Points : -1
Citation:
Envoyé par julp Voir le message
Outre l'erreur de syntaxe et un ancrage inadapté (si on s'en réfère au choix de preg_match_all), il manque les séparateurs et le modificateur s pour que le métacaractère point inclut \n. Et, normalement, rendre le motif non gourmand.
Code :
$motif = '~\.R(.+)\.G~sU'; # ou ~\.R(.+?)\.G~s
ca marche tres bien merci
ouss747 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2010, 16h09   #4
 
Inscription : mars 2008
Messages : 36
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 36
Points : -1
Points : -1
juste une dernière chose, comment exprimer le ou dans les expressions régulières
car ici:
Citation:
'~\.R(.+)\.G~sU'
la fin est G

et moi je veux que la fin soit un G ou un T

merci bcp bcp bcp
ouss747 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2010, 16h20   #5
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
Si j'ai bien compris :
  • Dans le cas particulier d'un caractère, une classe suffit : [ABC] (le caractère a ou b ou c)
  • Sinon, par une alternative (métacaractère |) : foo|bar ("foo" ou "bar") - une parenthèse (non-)capturante pouvant alors être nécessaire : p(?:foo|bar)s pour pfoos ou pbars

Ne pas oublier de consulter des tutoriels sur la question. Par exemple : Initiation aux expressions régulières en PHP
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h47.


 
 
 
 
Partenaires

Hébergement Web