J'espère qu'il y aura un moyen facile de le faire, je suppose des expressions régulières. Quel est le meilleur moyen de java de diviser la chaîne suivante en adresses e-mail? Le fait qu'une virgule puisse apparaître dans les doubles guillemets le rend un peu plus difficile. Je suppose que cela fonctionnerait idéalement avec des guillemets simples? Je pensais qu'il serait bon de vérifier s'il y a un moyen plus simple d'écrire un analyseur complet!Expression régulière pour le fractionnement des adresses e-mail (en Java)
Répondre
La plupart seront traitées par:
\b[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}\b
Bien que pour une utilisation complète de la conformité RFC-2822:
(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])
deux de regular-expressions.info, avec une discussion sur l'endroit où il est loin de "parfait".
En Java, continuez à répéter pour trouver uniquement les adresses e-mail sans les noms.
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Main {
public static void main(String[] args) {
new Main().findEmails("[email protected], \"Jane\" <[email protected]>, \"Smith, Mr\" <[email protected]>");
}
public void findEmails(String s) {
System.out.println("ready: "+s);
Pattern p = Pattern.compile("\\b[A-Z0-9._%+-][email protected][A-Z0-9.-]+\\.[A-Z]{2,4}\\b",
Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(s);
while (m.find())
System.out.println("Found: "+m.group());
}
}
Du lien de Chadwick, un regex correct pour RFC2822:
(?:[a-z0-9!#$%&'*+/=?^_
{|} ~ -] + (: [a-z0-9 # $% & « * +/=.!?^_ {|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])
- 1. Email expression régulière
- 2. Expression régulière pour parser hashtags en Java
- 3. Validation des adresses email (ASP.NET)
- 4. Java Expression régulière Problème
- 5. Expression régulière (Java)
- 6. ANTLR Grammaire pour syntaxe Java Expression régulière
- 7. Expression régulière en Python?
- 8. Expression régulière pour trouver une expression régulière?
- 9. Expression régulière Javascript pour effacer le contenu entre guillemets
- 10. Expression régulière pour l'hôte
- 11. python expression régulière pour retweets
- 12. Expression régulière en C
- 13. Expression régulière pour obtenir des fonctions pascals
- 14. Expression régulière en Flash
- 15. expression régulière pour analyser des liens html
- 16. expression régulière pour convertir des balises WordPress en HTML
- 17. expression régulière pour le contenu entre accolades
- 18. paramétrées expression régulière en Python
- 19. expression régulière "contient" une autre expression régulière
- 20. Débutant: Expression régulière pour l'URL
- 21. Envoi email en Java
- 22. Comment puis-je regrouper plusieurs adresses e-mail et les noms d'utilisateur en utilisant une expression régulière
- 23. Expression régulière pour extraire l'adresse e-mail d'une autre expression régulière
- 24. expression régulière pour analyser la chaîne d'option
- 25. Expression régulière pour extraire les en-têtes POP3
- 26. Expression régulière
- 27. Exclusif ou en expression régulière
- 28. fractionnement des tableaux
- 29. co. corp. inc. expression régulière
- 30. Expression régulière pour réduire un cas
N'est-ce pas mignon? :) – serg
Il me dit "regexs ne sont pas une bonne solution à tous les problèmes". –