Expressions regulieres sous PHP

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.

2 réponses

  1. 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";
    1. merci pour votre réponse je vais essayé et je vous contacterai dès que j'aurai les resultats
    2. salut, j'ai essayé et ca ne marche pas, le "s" que tu as mis a la fin veut dire quoi!?
      autres solutions?
  2. 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.
    1. ok, merci bcp