[regex] récupérer une adresse email sur base d'un contenu

récupérer une adresse email sur base d'un contenu [regex] - Java - Programmation

Marsh Posté le 18-09-2002 à 12:28:26    

Bon j'ouvre un topic séparé pour résumer mon problème. J'ai un contenu libre (du texte) et je dois récupérer les adresses emails dans ce texte. Ces adresses peuvent etre contenues entre () ou ''. Là pour le moment j'ai un tableau de String avec des tokens qui sont suceptibles d'etre une adresse email (qui contient le char @ ).
 
Comment faire (le plus efficient possible pour récupérer l'adresse email (donc sans () "" et autre) sur base de, par exemple
 

Code :
  1. (toto@tutu.com)
  2. 'toto@tutu2.com'
  3. rienavoir@
  4. @pfff


 
-> toto@tutu.com  et toto@tutu2.com    
 
 
Merci ;)


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 18-09-2002 à 12:28:26   

Reply

Marsh Posté le 18-09-2002 à 13:49:57    

chuis pas sur que t'aies vraiment besoin de regex.
sinon j'ai une regex qui valide une addresse email


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 18-09-2002 à 14:01:05    

--greg-- a écrit a écrit :

chuis pas sur que t'aies vraiment besoin de regex.
sinon j'ai une regex qui valide une addresse email
 




 
ouais j'en ai une aussi mais sinon tu proposes quoi d'autre? Suppose que j'ai les quatres tokens de mon premier post. Comment je fais pour récupérer les adresses email [:sisicaivrai]


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 18-09-2002 à 14:08:36    

euh.


Message édité par --greg-- le 18-09-2002 à 14:09:25

---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 18-09-2002 à 14:10:28    

ouais mais le deal justement c'est que je ne sais jamais si c'est ( ou ' ou "" ou rien du tout. Et bon ce qu'il faudrait c'est un truc relativement générique ... (d'où l'idée des regex)


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 18-09-2002 à 14:16:18    

tricheur :fou:


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 18-09-2002 à 14:32:07    

:ange:


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 18-09-2002 à 14:33:11    

Pour récuperer tout ce qui ressemble à un mail, entre tout caractere non alphanumérique:

import org.apache.oro.text.regex.Perl5Compiler;
import org.apache.oro.text.regex.Pattern;
import org.apache.oro.text.regex.Perl5Matcher;
import org.apache.oro.text.regex.PatternMatcherInput;
 
/**
 *  
 *  
 * @author     --greg--
 * @author     $Author: $ (last edit)
 * @version    $Revision:  $
 * @created    Sep 18, 2002
 */
 
public class TestMailFetcherRegex {
 
    private static final String mailRegex = "([a-z0-9_]|\\-|\\.)+" +
                                            "@" +
                                            "(([a-z0-9_]|\\-)+\\.)+" +
                                            "[a-z]{2,4}";
 
    public static void main(String[] args) throws Exception {
        String test = "blablablabla(yo@yaisse.com)-eornd'hello@hello.be'et[trurururu@toutoutout.k9o] §trurururu@toutoutout.koool]ce,greg@chezMOI.com,tc";
 
        PatternMatcherInput input = new PatternMatcherInput(test);
        Perl5Compiler pc = new Perl5Compiler();
        Perl5Matcher pm = new Perl5Matcher();
 
        Pattern pat = pc.compile(mailRegex);
 
        while (pm.contains(input, pat)) {
            System.out.println( pm.getMatch().toString() );
        }
 
    }
}


 
attention, comme vous pourrez voir, ça ne matche que les emails en minuscules. un .toLowerCase sera de mise si vous voulez recuperer des emails non valides :D
 
ps: ça ressemble méchamment à l'exemple de la doc de org.apache.oro.text.regex.PatternMatcherInput, mais j'avais pas vu au début, promis :)
 
 
edit: joce :fou: y'a un bug dans l'affichage de code: à l'origine mes * du commentaire sont bien alignées verticalement! :fou:


Message édité par --greg-- le 18-09-2002 à 14:36:16

---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 18-09-2002 à 14:41:39    

:love:


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 18-09-2002 à 14:44:39    

merde, j'esperais un [:prosterne]
 
 
paidaiiii


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 18-09-2002 à 14:44:39   

Reply

Marsh Posté le 18-09-2002 à 14:45:06    

[:prosterne] --greg-- [:prosterne2]
 
satisfaite ? :D


Message édité par darklord le 18-09-2002 à 14:45:52

---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 18-09-2002 à 14:45:29    

:jap:


Message édité par --greg-- le 18-09-2002 à 14:45:40

---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 18-09-2002 à 15:34:14    

Wow, je ne connaissais meme pas l'existence des regex. Ca a l'air vraiment tres pratique.
 
Existe-il des tutoriaux qui serait complementaires à la documentation org.apache.oro.text.regex ?!
 
Merci d'avance

Reply

Marsh Posté le 18-09-2002 à 15:44:37    

plusieurs topics sur les regex sur le forum, tu devrais y trouver quelques liens ;)


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 18-09-2002 à 16:07:26    

raaaaaaaaaah ca fonctionne sa race [:prosterne]


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 18-09-2002 à 16:14:06    

c'est clair :D


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed