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
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: