Flux rss
Collection CommentÇaMarche.net
Rechercher : dans
Par : Mots clés Nom d'utilisateur
Messages sans réponse

Php expressions regulieres

Geff, le mardi 28 février 2006 à 10:53:13 
 Signaler ce message aux modérateurs

Bonjour,

Voila, j'ai un petit probleme qui se pose a moi !!


J'essaye avec les espressiosn regulieres en PHP de trouver un nombre entre 1 et 60.

J'ai donc essayé pleins de trucs depuis 1h comme

[0-59]
([0-5]?/d{1}
(1|2|3|4|5)/d
.......

en gros ce ne sont que 2,3 petits exemples de ce que j'ai testé, mais cela ne marche pas du tout car qd je tappe 78413 par exemple ca me le laisse passer !!

je sais que c tout bete, mais si quelqu'un pouvait m'eclirer la lanterne !!


merci a toute !!

1

teebo, le mardi 28 février 2006 à 10:56:30

Salut,
Premièrement, est-ce que les expressions régulières sont vraiment le meilleur moyen pour ça ? Je veux dire, tu as un entier, tu peux le tester avec des > et des < non?

Sinon tu y tiens vraiment ça devrait être un truc du genre (règle générale, je n'ai jamais fait de regexp sous php):
[0-5][0-9]
non?
La vérité pure et simple ?
La vérité est rarement pure et jamais simple.

O.Wilde

Répondre à teebo

2

geff, le mardi 28 février 2006 à 11:09:04

Merci de ton aide !!

Non malheureusement, je peu pas me servir des < et > car la chaine de caractere que je cherche peut aussi bien etre un chiffre de 0 a 60 que une suite de chiffre (ex : 1,25,78,53) ou bien encore une liste ( ex: 1-56)

qd a [0-5][0-9] ca ne marche pas car cela accepte les chiffres plus grands que 59 .

ex : si je mets 54691231 ca l'accepte alors que je le souhaite pas moi !!

si t'as une idée ....

thx

Répondre à geff

3

lami20j, le mardi 28 février 2006 à 16:03:37

Essaie ça, je n'ai pas tester et je ne sais pas si en php on peut utiliser \D (peut être remplacé avec [^0-9]

\D(0?[1-9] | [1-5][0-9])\D

Répondre à lami20j

4

kilian, le mardi 28 février 2006 à 16:55:55

Personnelement, je transformerais toute la chaine en un tableau (dont le séparateur sera tout ce qui n'est pas un chiffre)
Puis je testerais tous ses éléments (donc les nombres) un à un.

Tu prends tout ton texte, que tu tranformes en tableau de nombres:

$tab_num=split('[^0-9]', $texte);


Et pour tout élément de $tba_num, tu fais ton test
foreach ($tab_num as $num)
{
         if ( ($num <=60) && ($num >=1) ){
                    //Patati, patata...
         }
}


Note trouvée sur le site de Php: preg_split est plus rapide que split....

Répondre à kilian

5

lami20j, le mardi 28 février 2006 à 19:46:29

Salut kilian,

l'idée n'est pas mauvaise. En fonction des besoins je l'utilise souvent. Paradoxal elle m'a echappé en pensant aux regex et pas à la comparaison.

Voilà je me suis amusé un peu

#! /usr/bin/perl

use warnings;
use strict;

my $ch ='dsfds  45 dsfds 254 dsfsd 1-25 5,25,78,54,987 45454545 75487 et a la fin 05.';

print "avec grep\n\n";
print  grep { ($_ =~ /\d+/)?( $_ >= 1 && $_ <= 60 ):1 }
          split(/[^0-9]/,$ch),"\n";

print "avec map\n\n";
print map { if ($_=~/\d+/ && ( $_ >=1 && $_ <= 60)) { $_ .= " "} }
          split(/[^0-9]/,$ch),"\n";

print "\net regex\n\n";
while ($ch =~/(?<=\D)         # test arriere non chiffre
                ( 0?            # les cas 01...09 optionnel
                  [1-9]       # les cas 1..9
                  |           # ou
                  [1-5][0-9]  # les cas 10...59
                )
              (?=\D|$)          # test avant non chiffre ou fin de chaine
            /gx) {            # recherche progressive en contexte scalaire
            print "$1 dans la positon ",pos($ch) - 1,"\n";
}

[lamitest@localhost corbeille]$ perl 000.pl
avec grep

451255255405
avec map

45 1 25 5 25 54 05
et regex

45 dans la positon 8
1 dans la positon 26
25 dans la positon 29
5 dans la positon 31
25 dans la positon 34
54 dans la positon 40
05 dans la positon 74

Répondre à lami20j

6

 kilian, le mardi 28 février 2006 à 20:14:14

Je commence à comprendre pourquoi on compare le perl à de la poésie...

C'est aussi illisible que beau :-)

Répondre à kilian
[PHP] expressions regulières (Résolu) Bonjour, Malgré des nombreuses recherches sur Google et sur le Forum CCM je n'arrive toujours pas a me depatouiller des ces expressions regulieres. Mon probleme est le suivant: Je dispose d'un fichier texte qui est de cette forme : Conducteur VALJEAN... www.commentcamarche.net/forum/affich-2252061-php-expressions-regulieres
[PHP]Expression régulière & condition if (Résolu) Bonjour, J'ai un petit souci pour réaliser mon back-office. J'ai deux pages pour mettre à jour mes dates. La première page contient le tableau avec les champs pré-remplis. Tout fonctionne, mais quand j'ai voulu mettre une expression régulière, celle... www.commentcamarche.net/forum/affich-3211608-php-expression-reguliere-condition-if
Expression régulière : Petit problème (Résolu) Bonjour, Alors voilà: Je suis en projet et je dois développer en php un automate pour le web. J'ai appris très recemment qu'on pouvait utiliser les expressions régulières mais comme je n'y connait rien, même avec la doc php.net et des essais ben là ça... www.commentcamarche.net/forum/affich-2141005-expression-reguliere-petit-probleme
Vérifier le format d'une date en PHPIl existe plusieurs méthodes pour verifier le format d'une date en PHP, vous pouvez par exemple découper la chaîne puis tester les valeurs de chaque élément. Plus simplement nous utiliserons les expressions régulières. Pour valider une date au... www.commentcamarche.net/faq/sujet-9883-verifier-le-format-d-une-date-en-php
[PHP] Vérifier le format d'une adresse mailIl existe plusieurs manières de déterminer si une variable contient une adresse email valide. Ces techniques ne vérifient pas si l'adresse email existe bien mais elles déterminent si la chaine contenue dans une variable respecte bien le format d'une... www.commentcamarche.net/faq/sujet-855-php-verifier-le-format-d-une-adresse-mail
[RegExp] Récupérer une adresse IPFinalité Mise en œuvre Explications Interprétation du motif Récupérer une adresse IP Finalité Pour récupérer une IP dans un fichier texte, fichiers journaux, pages web, etc. Mise en œuvre L'expression régulière suivante combinée à la... www.commentcamarche.net/faq/sujet-911-regexp-recuperer-une-adresse-ip
[PHP] Syntaxe d'expressions régulièresBonjour, je cherche à déceler si une chaine de caractère respecte le format suivant en respectant les crochets et les espaces : lettres chiffres [lettres chiffres] En consultant wikipedia, j'ai mis au point l'expression régulière suivante :... www.commentcamarche.net/forum/affich-6501348-php-syntaxe-d-expressions-regulieres
[PHP] - expressions régulières, preg_matchBonjour, j'aimerais écrire un script PHP qui récupère tous les expéditeurs de ma inbox sur Firefox. Pour ceci, j'essaie d'utiliser preg_match_all.. mais je suis nulle avec les expressions régulières et ne trouve pas de bon tutoriel. J'aimerais... www.commentcamarche.net/forum/affich-6047880-php-expressions-regulieres-preg-match
[théorie langage] Expression régulièresVous pouvez m'aider pour ca svp Donner une expression reguliere decrivant (a) les nombres entiers multiples de 5 (b) les nombres binaires (c) les nombres hexadecimaux www.commentcamarche.net/forum/affich-2625715-theorie-langage-expression-regulieres
Javascript - L'objet RegExpLes particularités de l'objet RegExp L'objet RegExp est un objet permettant de manipuler des expressions régulières, c'est-à-dire des modèles créés à l'aide de caractères ASCII permettant de manipuler des chaînes de caractères, afin de trouver des... www.commentcamarche.net/contents/javascript/jsregexp.php3
Tableur - Les expressionsLa notion d'expression Les expressions permettent au tableur d'effectuer des calculs simples mettant en jeu des valeurs provenant de plusieurs cellules. On distingue généralement plusieurs types d'expressions : Les expressions arithmétiques Les... www.commentcamarche.net/contents/tableur/tabexpr.php3
PHP - Structures conditionnellesQu'est-ce qu'une structure conditionnelle? On appelle structure conditionnelle les instructions qui permettent de tester si une condition est vraie ou non, c'est-à-dire si la valeur de son expression vaut 0 ou 1 (le PHP associe le mot clé true à 1... www.commentcamarche.net/contents/php/phpcond.php3