Bonjour

J'ai finalement utilise la solution que j'ai trouve et ca a l'air de bien
fonctionner.

Mais j'aimerai bien comprendre cette expression:
$pattern = "#(\w*)_1 $sep \1_2 \(([^\)]*)):#";

#: Debut et fin d'expression
(\w*)_1: c'est un Sous masque numerote 1 pour les references arrieres. \w
correspond a un caractere et le * lui donne une longueur de 0 ou plus
$sep: C'est le separateur "-" que l'on connait
\1_2: On rappelle le sous-masque 1 et l'on note ce numerote 2 ce nouveau
sous masque.
\(([^\)]*)):  : Cette partie me pose probleme
Si \( correspond a ( qui est avant textecherche et que ): correspond au ):
apres textecherche
alors comment traduire ([^\)]*)
( et ) ouvre et ferme le sous masque, * repete plusieur fois [^\)]
donc si j'ai bien compris [^\)]* correspond a textecherche (et sera stocke
dans $matches de preg_match($pattern, $texte, $matches))
[ et ] ouvre et ferme une definition de classe. Cette notion n'est pas tres
claire pour moi

Est ce que l'on appelle "classe" la partie qui doit etre la solution de
l'expression?
Et pour finir:
^\): correspond a tout ce qui n'est pas )   (^=negation, \)=)  )

Est ce que ma traduction vous semble exacte?



Cordialement
Hugues


Le 11 janvier 2011 19:20, Patrick CAO HUU THIEN <
patrick.cao_huu_th...@upmc.fr> a écrit :

> Hugues MORIN a dit le 01/10/2011 11:37 AM:
> > je cherche a extraire 'textecherche' sachant que le tiret entre
> > textequelconque_1 et textequelconque_2 est fixe
> > et que le " (" et "):" autour de  'textecherche' est fixe
> >
> > textequelconque_1 - textequelconque_2 (textecherche):
>
> Si tu connais a l'avance «textequelconque» essaie tout simplement :
>
>  $untexteqcq = 'mon texte super quelconque';
>  $sep='-';
>  $pattern = "#${untexteqcq}_1 $sep ${untexteqcq}_2 \(([^\)]*)):#";
>  preg_match($pattern, $texte, $matches)
>
> PS: je suis pas sure pour la syntaxe ${untexteqcq} mais vous voyez
> ce que je veux dire
>
> Si tu ne connais pas à l'avance «textequelconque» il faut utiliser
> les reference arriere[1]:
>
>  $pattern = "#(\w*)_1 $sep \1_2 \(([^\)]*)):#";
>
> PS2: «(\w*)» suppose un texte avec uniquement des chiffres et
> lettre. A affiner si besoin [2]
>
> voila
>
> [1] http://fr2.php.net/manual/fr/regexp.reference.back-references.php
> [2] http://fr2.php.net/manual/fr/regexp.reference.escape.php
>
> patrick
>
>

Répondre à