Problème de regex, capture de texte entre 2 caractères [Résolu]

Signaler
Messages postés
29
Date d'inscription
dimanche 23 janvier 2005
Statut
Membre
Dernière intervention
18 mars 2008
-
Messages postés
29
Date d'inscription
dimanche 23 janvier 2005
Statut
Membre
Dernière intervention
18 mars 2008
-
Bonjour,

J'ai un petit problème avec des regex !

Après avoir longtemps cherché, j'ai trouvé la solution à mon premier problème. Mais pas au second !

J'ai une chaîne de caratère qui contient un opérateur, un @, un nom, et éventuellement un point suivi de caractères quelconques.
Exemple:<=@23.p.ao

On connait l'opérateur et le @.

J'aimerais récupérer le nom compris entre le @ et le point. Attention que le @ sera toujours là, mais le point (et la chaine de caractères qui le suit) lui est facultatif.

J'aimerais aussi que s'il n'y a rien entre le @ et le point (ou la fin de chaine), $x soit vide.

J'ai ceci mais ça foire:
$x = preg_replace ('#(?:.*)@(.*)\.?(?:.*)#U', '$1', $opt);

J'ai traivaillé avec preg_replace mais n'importe quel fonction est autorisée si ça fonctionne !

Je sais que c'est un peu exigeant... mais si vous saviez venir à mon secours, ça me ferait très plaisir!

Merci beaucoup.

1 réponse

Messages postés
29
Date d'inscription
dimanche 23 janvier 2005
Statut
Membre
Dernière intervention
18 mars 2008

Désolé d'avoir été impatient (j'ai quand même cherché toute la matinée...) en faisant un autre test, j'ai trouvé:




$x = preg_replace ('#^(?:[^@]*)@([^.]*)[.]?(.*)#s', '$1', $opt);

Ca marche super chez moi et sur le serveur de projet...

Merci quand même.