Aller au contenu

expression régulière


Sujets conseillés

Posté

Bonjour,

Je voudrais extraire des sous-chaines d'une chaine de caractère. Les sous chaines sont délimitées par le caratère "_"

Je voudrai utiliser des expressions régulières mais j'ai vraiment du mal !

mon code :

	

$MaChaine="_valeur1_val2_"
$Expression="/_(.)*(?=_)/";
preg_match_all($Expression, $MaChaine, $lesvar, PREG_SET_ORDER);
$var1=$lesvar[0][1]; //=valeur1
$var2=$lesvar[1][1]; //=val2

Ma faille viendrait de $Expression (ne tenez pas compte de ce qu'il y a dedans, j'ai fait plein d'essais et j'ai laissé le dernier :( )...

Merci pour votre aide

Posté

Peut-être

$Expression="/(_)(.*)(_)(.*)(_)/";

mais ça n'est qu'une proposition, je ne maîtrise pas assez les expressions régulières pour arriver à des résultats positifs sans tâtonnement :blush:

Posté

Merci...

Le "bon" code :

$MaChaine="_valeur1_val2_"
$Expression="/_(.*?)_(.*?)_/";
preg_match_all($Expression, $MaChaine, $lesvar, PREG_SET_ORDER);
$var1=$lesvar[0][1]; //=valeur1
$var2=$lesvar[0][2]; //=val2

Posté

"(.*?)" ne veut trop rien dire ;)

"(.*)" = 0 ou plusieurs occurences de n'importe quel caractères

"(.?)" = 0 ou 1 occurence de n'importe quel caractères

Pour le reste l'usage ou non de parenthèses pour délimiter la chaîne underscore ne doit pas être un problème.

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...