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

ecocentric - WRInaute accro

- Messages: 3577
- Inscription: Mar Fév 10, 2004 16:40
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 ?
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
-

ecocentric - WRInaute accro

- Messages: 3577
- Inscription: Mar Fév 10, 2004 16:40
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: 3577
- Inscription: Mar Fév 10, 2004 16:40
The Jedi a écrit:J'ai pas compris quelle était la chaine de départ, celle avec [[...]] ou sans ?
Avec [[...]]
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]]");
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 Julien Coquet, expert certifié officiellement par Google Analytics.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- Mettre à jour régulièrement son site : conseil n°10 en référencement
- Sandbox, blacklistage et autres pénalités de Google
- Les bonnes stratégies de mots-clés pour le référencement
- Nouvelle étude de WebRankInfo : les mots-clés et le référencement
- La calculatrice Google
- Impact du PageRank dans le positionnement Google
- Google Suggest API
- Google News : trucs et astuces
- Exalead améliore son interface
- Google attaqué en justice
- Expression
- Expression régulière
- expression php
- re expression régulière...
- expression réguliere!please help!!!
- même expression en title et h1
- Expression URL rewriting
- Expression régulière simple
- soucis expression reguliere
- expression régulière en javascript
- MYSQL et expression LIMIT
- Microsoft Expression CTP
- expression imcompréhensible en php
- problème expression régulière
- RedirectMatch et expression régulière
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité



le forum