[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [HS] Re: aide pour expression reguliere..... basique



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_thien@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



Reply to: