Expressions regulieres sous PHP

Fermé
ouss747 Messages postés 109 Date d'inscription dimanche 2 septembre 2007 Statut Membre Dernière intervention 23 juin 2013 - 22 déc. 2010 à 11:53
ouss747 Messages postés 109 Date d'inscription dimanche 2 septembre 2007 Statut Membre Dernière intervention 23 juin 2013 - 22 déc. 2010 à 20:41
bonjour

je cherche à extraire une chaine de caractères inclue dans une autre chaine 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 chaine

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

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

j'ai utilise ce motif mais ca donne pas de bon resultat:

$motif=''^(\.R)\s.+(\.G)$'';

quel est le motif qu'on doit utilise?

Merci d'avance.
A voir également:

2 réponses

elli32713 Messages postés 81 Date d'inscription mardi 24 juin 2008 Statut Membre Dernière intervention 22 décembre 2010 29
22 déc. 2010 à 12:21
Bonjour,
Tu fais de multiples erreurs..
Déjà, si tu utilise une fonction qui commence par "preg_", c'est que tu utilises PCRE et non pas POSIX, d'où l'utilité de délimiteurs (des #, par exemple).
Ensuite, les parenthèses (ici, capturantes) ne sont pas bien placées : elles doivent entourer ce qui doit être récupéré, en l'occurence les "text text...".
Enfin, il y a des retours à la ligne dans ton texte, ils doivent aussi être récupérés.

J'en arrive finalement à la regex suivante :
$motif = "#^\.R(.+)\.G$#s";
4
ouss747 Messages postés 109 Date d'inscription dimanche 2 septembre 2007 Statut Membre Dernière intervention 23 juin 2013 13
22 déc. 2010 à 12:30
merci pour votre réponse je vais essayé et je vous contacterai dès que j'aurai les resultats
0
ouss747 Messages postés 109 Date d'inscription dimanche 2 septembre 2007 Statut Membre Dernière intervention 23 juin 2013 13
22 déc. 2010 à 13:51
salut, j'ai essayé et ca ne marche pas, le "s" que tu as mis a la fin veut dire quoi!?
autres solutions?
0
elli32713 Messages postés 81 Date d'inscription mardi 24 juin 2008 Statut Membre Dernière intervention 22 décembre 2010 29
22 déc. 2010 à 17:57
Bonjour,
Le "s" est une option, elle permet que la classe universelle (le point) prenne aussi en compte les sauts de ligne.
Sinon, tu peux aussi essayer avec le fonction preg_match.
Sinon, je n'ai pas d'autres idées.
2
ouss747 Messages postés 109 Date d'inscription dimanche 2 septembre 2007 Statut Membre Dernière intervention 23 juin 2013 13
22 déc. 2010 à 20:41
ok, merci bcp
0