Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/09/2006, 18h33   #1
Membre extrêmement actif
 
Avatar de lodan
 
Inscription : juin 2006
Messages : 1 804
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 1 804
Points : 587
Points : 587
Par défaut Extraction d'un mot et d'un nombre dans

Bonsoir,

J'ai une chaîne de caractères composé d'un mot de longueur variable, puis d'un nombre. Voici quelques exemples :

Code :
1
2
3
coucou36
toile24
heure1
Je souhaite récupérer séparément le mot et le nombre, est-ce possible ?

Merci d'avance
__________________
Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.
lodan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2006, 18h40   #2
Membre chevronné
 
Avatar de Dia_FR
 
Homme Aurélien
Développeur Web
Inscription : avril 2006
Messages : 510
Détails du profil
Informations personnelles :
Nom : Homme Aurélien
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2006
Messages : 510
Points : 643
Points : 643
http://www.idecibel.com/modules/newb...1&post_id=6364

par contre moi les expressions régulières... donc j'espère que tu maitrises ça
Dia_FR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2006, 19h16   #3
Membre extrêmement actif
 
Avatar de lodan
 
Inscription : juin 2006
Messages : 1 804
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 1 804
Points : 587
Points : 587
Bon, j'ai fait comme cela, mais ça ne fonctionne pas :

Code :
1
2
3
4
5
6
$texte='coucou35';
	$masque='([\\D]+)([\\d]+)';
	preg_match_all($masque, $texte, $resultats);
	echo"<p> :"; 
	print_r($resultats);
	echo"<p>";
__________________
Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.
lodan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2006, 19h42   #4
Membre émérite

 
Avatar de FCYPBA
 
Inscription : novembre 2004
Messages : 735
Détails du profil
Informations personnelles :
Âge : 33
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : novembre 2004
Messages : 735
Points : 924
Points : 924
Attention tu utlises les expressions régulières perl ( bien ) mais celles-ci demandent un délimiteur en début et fin de masque.

Essaie comme ca

Code :
1
2
 
$masque='/([\\D]+)([\\d]+)/';
Par contre je n'ai pas vérifié la regex, moi j'aurais plutôt fait comme ca

Code :
1
2
 
$masque='/([^0-9]+)([0-9]+)/';
^0-9 selectionne tout ce qui n'est pas un nombre
0-9 selectionne que les chiffres

A tester bien etendu sur une selection de chaines.

preg_match_all va récuperer toutes les possibilités dans ta chaine. Si le masque n'est succeptible d'être présent qu'une seule fois alors utilise plutôt preg_match

Edit : on va oublier ma remarque sur la regex.
J'ai toujours eu du mal avec la notation abrégé que je ne trouve pas clair
__________________
Pierre
1. Dans le manuel ( PHP, MySQL,..., rayez la mention inutile), tu te plongeras à deux fois plutôt qu'aucune.
2. Dans la doc php, tu liras attentivement les sections Chaines de caractères, Tableaux et Système de fichiers
3. Un code rapide c'est bien, un code maintenable c'est mieux
...

Why was the font tag an orphan ? Because it didn't have a font-family.
FCYPBA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2006, 20h33   #5
Modérateur
 
Avatar de Bisûnûrs
 
Josselin
Développeur Web
Inscription : janvier 2004
Messages : 9 050
Détails du profil
Informations personnelles :
Nom : Josselin
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : janvier 2004
Messages : 9 050
Points : 12 181
Points : 12 181
Initiation aux expressions régulières en PHP
Bisûnûrs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2006, 20h42   #6
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Très simple

Code :
preg_match("#([a-zA-Z]+)([0-9]+)#",$tachaine,$split);
J'ai pas testé mais c'est censé renvoyer la chaine d'un coté et le nombre de l'autre. Par contre, c'est une regex que pour une ligne.

Sinon la solution de facilité :
Code :
1
2
 
preg_match_all("#([a-z]+)([0-9]+)#Usi",$tachaine,$split);
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2006, 20h45   #7
Membre émérite

 
Avatar de FCYPBA
 
Inscription : novembre 2004
Messages : 735
Détails du profil
Informations personnelles :
Âge : 33
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : novembre 2004
Messages : 735
Points : 924
Points : 924
Citation:
Envoyé par Kerod
Très simple
Sinon la solution de facilité :
Code :
1
2
 
preg_match_all("#([a-z]+)([0-9]+)#Usi",$tachaine,$split);
Ce code ne reverra que les caractères alphabétiques standard pour la première occurence

Une question c'est quoi l'option U que tu utilise
__________________
Pierre
1. Dans le manuel ( PHP, MySQL,..., rayez la mention inutile), tu te plongeras à deux fois plutôt qu'aucune.
2. Dans la doc php, tu liras attentivement les sections Chaines de caractères, Tableaux et Système de fichiers
3. Un code rapide c'est bien, un code maintenable c'est mieux
...

Why was the font tag an orphan ? Because it didn't have a font-family.
FCYPBA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2006, 20h51   #8
Membre extrêmement actif
 
Avatar de lodan
 
Inscription : juin 2006
Messages : 1 804
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 1 804
Points : 587
Points : 587
Merci FCYPBA,

J'ai testé les 2 solutions et en fait dans mon cas "preg_match" sera suffisant.

Ton masque est aussi plus parlant pour moi.

Merci encore.
__________________
Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.
lodan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2006, 20h52   #9
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
En gros que les majuscules sont aussi acceptées
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2006, 21h23   #10
Membre extrêmement actif
 
Avatar de lodan
 
Inscription : juin 2006
Messages : 1 804
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 1 804
Points : 587
Points : 587
Merci Kerod pour cette précision
__________________
Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.
lodan est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h48.


 
 
 
 
Partenaires

Hébergement Web