Probleme de regex

jambonbeurre069 Messages postés 1 Date d'inscription mardi 27 décembre 2016 Statut Membre Dernière intervention 27 décembre 2016 - 27 déc. 2016 à 18:46
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 - 27 déc. 2016 à 19:44
Bonjour,
Alors voici mon problème j'ai un tableau de chaîne de caractères type: Meringue italienne 50g , Feuilles de gélatine 3, Cubes 10 x 10 d'ananas 150g
Malheureusement j'ai que ce format car c'est sorti d'un fichier excel que je n'ai pas le droit de modifier et je doit séparer le titre de la quantité.

$tab_string = array("Meringue italienne 50g", "Feuilles de gélatine 3", "Cubes 10 x 10 d'ananas  150g", "Crème liquide 1,5cl");
foreach ($tab_string as &$value) {
$titre="";
$quantite="";
//je fait ma regex
echo "titre ".$titre;
echo "quantité ".$quantite."<br/>";
}


Hors je n'arrive pas à trouver comment faire une bonne regex afin de pouvoir faire mon truc merci pour votre aide par avance et joyeuse fête.

1 réponse

Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 656
27 déc. 2016 à 19:44
Bonsoir

je suis plutôt partisan des Regex, mais y'a des cas ou ça n'est pas forcément utile.

Tes exemples ont tous un espace entre la description et la quantité, en splitant ton texte (avec preg_split) tu pourras dans la dernière "case" du résultat récupérer la quantité, les autres cases seront la description.

Si tu veux vraiment une regex, il existe des sites en ligne pour les tester (je ne code pas en PHP, mais j'en ai trouvé pour PHP).

En général, ils proposent aussi un lexique de la syntaxe.

En gros ce qui ressort de tes exemples c'est:
  • début de texte
  • un groupement contenant n'importe quel caractères plusieurs fois
  • un espace
  • un groupement contenant un ou plusieurs chiffres éventuellement d'une virgule suivi d'au moins un chiffre et éventuellement suivis de lettres
  • fin de texte


^(.+) (\d+(?:,\d+)?(?:\w?)+)$


0
Rejoignez-nous