ti pb sur exp reguliere

Consultez la formation à Google Analytics de WebRankInfo / Ranking Metrics

achaternet
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 256
Inscription: 11 Fév 2003

ti pb sur exp reguliere

Message le Jeu Avr 01, 2004 14:20

bonjour,

je souhaite selectionner un block commençant par - [ et finissant par ]

comment dois- je ecrire ma regle?

j ai essayé ça ^-.[(.*).]$
, mais marche poa.

merci de votre aide ;)


George Abitbol
WRInaute passionné
WRInaute passionné
 
Messages: 1923
Inscription: 6 Juin 2003

Message le Jeu Avr 01, 2004 14:34

Bonjour,

Ca ne marche pas parce que les crochets sont des caractères ayant une signification particulière pour les expressions régulières. Il faut les échapper si on veut les utiliser comme de simples caractères.

Donc a priori, ce serait quelque chose comme ça :

Code: Tout sélectionner
/^- \[(.*)\]$/


Si c'est en PHP :

Code: Tout sélectionner
<?php
preg_match('/^- \[(.*)\]$/', $ta_chaine, $matches);
echo $matches[1];
?>


http://fr.php.net/preg_match

Fred

pinoc
WRInaute discret
WRInaute discret
 
Messages: 105
Inscription: 10 Avr 2003

Message le Jeu Avr 01, 2004 14:48

Franchement, les expressions régulières, c'est un art !!!

achaternet
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 256
Inscription: 11 Fév 2003

Message le Jeu Avr 01, 2004 15:31

George Abitbol a écrit:Ca ne marche pas parce que les crochets sont des caractères ayant une signification particulière pour les expressions régulières. Il faut les échapper si on veut les utiliser comme de simples caractères.

Donc a priori, ce serait quelque chose comme ça :

Code: Tout sélectionner
/^- \[(.*)\]$/


Si c'est en PHP :

Code: Tout sélectionner
<?php
preg_match('/^- \[(.*)\]$/', $ta_chaine, $matches);
echo $matches[1];
?>


http://fr.php.net/preg_match

Fred


Merci fred.

i me semblait bi1 qui avait un truc a rajouter pour les caracteres particuliers.

Le - par contre, est il considéré comme tel?

Sinon, j ai pas l impression que le code fonctionne


J ai repris le code php

<?
$tachaine="chou - [ bla bla ] 26:)";
preg_match('/^- \[(.*)\]$/', $ta_chaine, $matches);
echo $matches[1];
?>


et rien s affiche alors que je souhaite ainsi ds cette ex: chou 26:)

Ou es l erreur??

thks


George Abitbol
WRInaute passionné
WRInaute passionné
 
Messages: 1923
Inscription: 6 Juin 2003

Message le Jeu Avr 01, 2004 16:25

Euh... je comprends plus trop, là... Tu dis vouloir sélectionner le bloc compris entre - [ et ]. Donc dans ton exemple ce serait bla bla et pas chou 26:) comme tu le dis ensuite.

Donc :

- si tu veux récupérer bla bla dans chou - [ bla bla ] 26:), tu fais :

Code: Tout sélectionner
<?php
$ta_chaine = "chou - [ bla bla ] 26:)";
preg_match('/- \[(.*)\]/', $ta_chaine, $matches);
echo $matches[1]; // affiche bla bla
?>


- si tu veux supprimer bla bla dans chou - [ bla bla ] 26:), tu fais :

Code: Tout sélectionner
<?php
$ta_chaine = "chou - [ bla bla ] 26:)";
echo preg_replace('/- \[(.*)\]/', '', $ta_chaine); // affiche chou 26:)
?>


:!: Attention, tu avais mis $tachaine au début et $ta_chaine par la suite :!:

Fred

achaternet
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 256
Inscription: 11 Fév 2003

Message le Jeu Avr 01, 2004 17:19

George Abitbol a écrit:Euh... je comprends plus trop, là... Tu dis vouloir sélectionner le bloc compris entre - [ et ]. Donc dans ton exemple ce serait bla bla et pas chou 26:) comme tu le dis ensuite.

Fred


exact, j ai vu ça aprés :oops:

merci encore et là ça devrait le faire ;)))

JC91
WRInaute discret
WRInaute discret
 
Messages: 160
Inscription: 19 Déc 2003

Message le Jeu Avr 01, 2004 21:27

George Abitbol a écrit:- si tu veux récupérer bla bla dans chou - [ bla bla ] 26:), tu fais :

Code: Tout sélectionner
<?php
$ta_chaine = "chou - [ bla bla ] 26:)";
preg_match('/- \[(.*)\]/', $ta_chaine, $matches);
echo $matches[1]; // affiche bla bla
?>



Pour etre tout a fait complet
- si tu veux recuperer TOUT (y compris un caractere ']') entre le 1er '[' et le dernier ']' :
utilise /- \[(.*)\][^\]]*$/
- sinon
/- \[[^\]*\]/ est "mieux" que /- \[(.*)\]/

[^\]]* veut dire "tout sauf le car. ']' "
alors que .* veut dire "tout (y compris le car. ])"

achaternet
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 256
Inscription: 11 Fév 2003

Message le Ven Avr 02, 2004 9:06

JC91 a écrit:Pour etre tout a fait complet
- si tu veux recuperer TOUT (y compris un caractere ']') entre le 1er '[' et le dernier ']' :
utilise /- \[(.*)\][^\]]*$/
- sinon
/- \[[^\]*\]/ est "mieux" que /- \[(.*)\]/

[^\]]* veut dire "tout sauf le car. ']' "
alors que .* veut dire "tout (y compris le car. ])"


:arrow: Merci pour ces precisions JC91, qui peuvent dans certains cas poser pb


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

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 :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités