Expression régulière
9 messages
• Page 1 sur 1
Consultez la formation à Google Analytics de WebRankInfo / Ranking Metrics
-

ecocentric - WRInaute accro

- Messages: 3602
- Inscription: 10 Fév 2004
Expression régulière
Je cale sur une expression regulière assez simple à première vue :
Je pense que [[http://www.msn.be||MSN]] est plus mieux que [[http://www.google.com||Google]].
Ce que je veux, c'est les chaînes
http://www.msn.be||MSN
http://www.google.com||Google
Obtenir
http://www.msn.be
MSN
http://www.google.com
Google
serait bien aussi.
J'ai bêtement essayé
\[\[(.*)\]\]
mais ça ne marche pas.
En fait, il prend tout ce qui va du premier [[ au dernier ]]. J'ai essayé de remplacer le . par [^\[] mais ça n'arrange pas les choses.
Une idée ?
Je pense que [[http://www.msn.be||MSN]] est plus mieux que [[http://www.google.com||Google]].
Ce que je veux, c'est les chaînes
http://www.msn.be||MSN
http://www.google.com||Google
Obtenir
http://www.msn.be
MSN
http://www.google.com
serait bien aussi.
J'ai bêtement essayé
\[\[(.*)\]\]
mais ça ne marche pas.
En fait, il prend tout ce qui va du premier [[ au dernier ]]. J'ai essayé de remplacer le . par [^\[] mais ça n'arrange pas les choses.
Une idée ?
-

SuperPJ - WRInaute impliqué

- Messages: 513
- Inscription: 15 Jan 2005
Je tenterais cela :
\[\[([^\]]*)\]\]
Ca va ainsi te stoquer dans $1 la chaîne :
http://www.msn.be||MSN
ou la chaîne
http://www.google.com||Google
Sinon tu peux faire :
\[\[([^\|]*)\|\|([^\|]*)\]\]
et ça donne :
pour la 1ère expression => $1=http://www.msn.be et $2=MSN
pour la 2nde expression => $1=http://www.google.com et $2=Google
Ainsi, en Perl, un :
$expression = '[[http://www.msn.be||MSN]]';
$expression =~ s/\[\[([^\|]*)\|\|([^\|]*)\]\]/$1\n$2\n/;
print $expression;
t'affichera :
http://www.msn.be
MSN
Si tu as d'autres questions n'hésite pas
sans me vanter je suis assez bon en regexp 
\[\[([^\]]*)\]\]
Ca va ainsi te stoquer dans $1 la chaîne :
http://www.msn.be||MSN
ou la chaîne
http://www.google.com||Google
Sinon tu peux faire :
\[\[([^\|]*)\|\|([^\|]*)\]\]
et ça donne :
pour la 1ère expression => $1=http://www.msn.be et $2=MSN
pour la 2nde expression => $1=http://www.google.com et $2=Google
Ainsi, en Perl, un :
$expression = '[[http://www.msn.be||MSN]]';
$expression =~ s/\[\[([^\|]*)\|\|([^\|]*)\]\]/$1\n$2\n/;
print $expression;
t'affichera :
http://www.msn.be
MSN
Si tu as d'autres questions n'hésite pas
- tuisp
- WRInaute passionné

- Messages: 2076
- Inscription: 27 Juin 2003
Fire Wolf --> http://www.expreg.com/php.php 
-

ecocentric - WRInaute accro

- Messages: 3602
- Inscription: 10 Fév 2004
SuperPJ a écrit:Je tenterais cela :
\[\[([^\]]*)\]\]
Ca va ainsi te stoquer dans $1 la chaîne :
http://www.msn.be||MSN
ou la chaîne
http://www.google.com||Google
Sinon tu peux faire :
\[\[([^\|]*)\|\|([^\|]*)\]\]
et ça donne :
pour la 1ère expression => $1=http://www.msn.be et $2=MSN
pour la 2nde expression => $1=http://www.google.com et $2=Google
Ainsi, en Perl, un :
$expression = '[[http://www.msn.be||MSN]]';
$expression =~ s/\[\[([^\|]*)\|\|([^\|]*)\]\]/$1\n$2\n/;
print $expression;
t'affichera :
http://www.msn.be
MSN
Si tu as d'autres questions n'hésite passans me vanter je suis assez bon en regexp
Ok, je vais tester ça, merci !
-

ecocentric - WRInaute accro

- Messages: 3602
- Inscription: 10 Fév 2004
The Jedi a écrit:J'ai pas compris quelle était la chaine de départ, celle avec [[...]] ou sans ?
Avec [[...]]
- Oncle Tom
- WRInaute impliqué

- Messages: 812
- Inscription: 31 Mar 2003
Ok dac donc en php ça va te donner ça
- Code: Tout sélectionner
echo preg_replace("/\[\[([^\|]*)\|\|([^\|]*)\]\] /sIU", "<p><a href="$1">$1</a><br />$2</p>", "[[http://www.msn.be||MSN]]");
-

SuperPJ - WRInaute impliqué

- Messages: 513
- Inscription: 15 Jan 2005
Re: Expression régulière
ecocentric a écrit:Je cale sur une expression regulière assez simple à première vue :
Je pense que [[http://www.msn.be||MSN]] est plus mieux que [[http://www.google.com||Google]].
Ce que je veux, c'est les chaînes
http://www.msn.be||MSN
http://www.google.com||Google
J'ai bêtement essayé
\[\[(.*)\]\]
mais ça ne marche pas.
En fait, il prend tout ce qui va du premier [[ au dernier ]].
Ah oui Ecocentric j'oubliais de t'en expliquer la raison : c'est que par defaut les quantifieurs : "?", "*" et "+" cherchent à "matcher" le maximum de caractères possibles. C'est pour cela que ".*" te prend tout ce qui a du premier [[ au tout dernier ]]. C'est ce qu'on appelle du "greedy matching".
Il existe un quantifieur qui indique explicitement de "matcher" le MINIMUM de caractères (donc faire du "non greedy matching"), c'est le quantifier "*?". Mais je ne suis pas sûr que ce quantifieur existe dans la version des regexp inclues dans php (c'est pour cela que je n'ai pas utilisé .*? dans mon message initial), mais en tout cas il existe dans les versions de Perl 5 et supérieures. Grâce à ce quantifieur, tu remplaces donc ton \[\[(.*)\]\] par un \[\[(.*?)\]\] et ça va régler le problème de quantifieur "trop gourmand"
ecocentric a écrit:J'ai essayé de remplacer le . par [^\[] mais ça n'arrange pas les choses.
Tu t'es juste trompé de sens pour le crochet intérieur : c'est ] et non [ ...
9 messages
• Page 1 sur 1
Formation recommandée sur ce thème :
Formation Google Analytics : en 2 jours, apprenez comment exploiter l'essentiel des possibilités de l'outil de mesure d'audience de Google. Formation animée par les experts Google Analytics de Ranking Metrics.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- Expression régulière
- re expression régulière...
- expression réguliere!please help!!!
- Expression régulière simple
- soucis expression reguliere
- expression régulière en javascript
- problème expression régulière
- RedirectMatch et expression régulière
- Expression Régulière Malformée ?
- Expression régulière et redirect
- Sandbox, blacklistage et autres pénalités de Google - 16-03-2005
- Nouvelle étude de WebRankInfo : les mots-clés et le référencement - 04-01-2003
- La calculatrice Google - 12-09-2003
- Impact du PageRank dans le positionnement Google - 18-04-2005
- Google Suggest API - 17-08-2006
- Google News : trucs et astuces - 13-01-2005
- Les bonnes stratégies de mots-clés pour le référencement - 04-08-2008
- Google Trends - 13-05-2006
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités

