[regex] selection d'une phrase avec espacemen

Résolu/Fermé
TiBou59 Messages postés 22 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 12 mars 2008 - 25 mai 2007 à 18:04
TiBou59 Messages postés 22 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 12 mars 2008 - 28 mai 2007 à 17:08
Bonjour à tous,

Je bute sur un problème qui est le suivant :
j'aimerais sélectionner les chaines qu'il y a entre le deuxieme groupe de chevrons ">>" et le "@" (ici je l'ai mis en gras).

Exemple avec espace :
C;K"Boitiers >> Accessoires >> Panneau Transparent@"

Exemple avec caractères spéciaux :
C;K"Boitiers >> Aluminium >> Desktop / Salon@"


Avec l'expression regulieres suivante :
C\;K\"([A-Za-z]{1,})....([A-Za-z]{1,})....([A-Za-z]{1,})
je sélectionne tout jusqu'au premier mot après le deuxième bloc de chevron dont voici un exemple en gras :

C;K"Boitiers >> Accessoires >> Panneau Transparent"

Il est indispensable pour votre comprehension du sujet que vous sachiez que la longueur des chaines apres chevrons n'est pas fixe, j'ai énormément de cas à traiter.

Je vous demande juste, dans la mesure du possible, de compléter mon expression reguliere avec les criteres dont j'ai besoin.

Merci beaucoup par avance pour vos reponses.

2 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 896
25 mai 2007 à 23:56
Salut,

Je ne sais pas avec quel langage tu veux faire ton traitement, mais voilà ce que ça pourrait donner avec "sed" (éditeur de flux sous GNU/Linux, qui existe également pour Windows : sed pour Windows) :
$ A='C;K"Boitiers >> Accessoires >> Panneau Transparent@"'

$ B='C;K"Boitiers >> Aluminium >> Desktop / Salon@"'

$ echo $A | sed 's|^.*>> \(.*\)@.*|\1|'
Panneau Transparent

$ echo $B | sed 's|^.*>> \(.*\)@.*|\1|'
Desktop / Salon
J'espère que - à défaut de faire l'affaire à 100% - ça te permettra d'avancer un peu.

;-))
0
TiBou59 Messages postés 22 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 12 mars 2008 4
26 mai 2007 à 11:50
Merci beaucoup pour ton aide jipicy. J'apprécie.
Le langage que j'utilise est le langage PHP, désolé de ne pas l'avoir précisé, j'ai testé ton expression reguliere sur le logiciel RegexSR, elle ne sélectionne rien. Mais il est possible que ta regex me soit utile. Les regex etant tout nouveau pour moi, j'essaierai de déceler ta logique dans la création de la regex et de l'appliquer à la mienne.

Aujourd'hui et demain, c'est le week end alors REPOS :). Je t'enverrai certainement un prochain message lundi.

Merci
0
TiBou59 Messages postés 22 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 12 mars 2008 4
28 mai 2007 à 17:08
Exemple avec espace :
C;K"Boitiers >> Accessoires >> Panneau Transparent@"

Exemple avec caractères spéciaux :
C;K"Boitiers >> Aluminium >> Desktop / Salon@"

Le problème est résolu. L'expression régulière utilisée pour ces deux exemples est la suivante :

$item2 ="C\;N\;K\"([A-Za-z]{1,})....([A-Za-z]{1,})....([A-Za-z]{1,}).{1,}\@";
0