5.FreshMinutes.IT – Java & IT

5 minutes pour consolider ses connaissances en Java et dans les Nouvelles Technos.
  • Accueil
  • À propos
  • Télécharger Java
  • Contact, Twitter, Tumblr & Buzz

Tutoriel Regex – Les expressions régulieres les plus utiles en Java

Eric Vialle | Vendredi 23 mai 2008 | 12:51


  • Google Buzz

Les expressions régulières font parties des concepts les plus puissants en informatiques et pas des moins utiles en programmation avancée. Elles sont couramment utilisées pour vérifier ou aider l’utilisateur, lors d’entrées texte. Nous allons décrire rapidement comment utiliser les expressions régulières en Java et retracer les expressions régulières les plus couramment utiliser.

Du à un problème technique avec mon blog, le caractère guillemet “ est parfois remplacé dans le code source donné en en exemple par #8243; Je tache de résoudre cela des que possible.

Qu’est ce qu’une expression régulière ?

Une expression régulière est une suite de caractères typographiques (qu’on appelle plus simplement « motif » ou « pattern » dans sa forme anglaise) chargée de décrire une chaîne de caractères pour la trouver dans un bloc de texte et lui appliquer un traitement automatisé. On l’utilise pour reconnaitre certains modèle d’entrée utilisateurs, comme un numéro de téléphone, un code postal ou une adresse e-mail.

Comment définir une expression régulière?

Il existe des milliers de tutoriels sur Internet, des sites uniquement dédiés aux expressions régulières et même des livres. Au lieu de redire ce qui a déjà été dit et redit, je vous envoie sur l’un d’entre eux:

  • Les Expressions Régulières sur Wikipedia peut servir de tutoriel
  • Les Expressions Régulières en Java
  • Le site Regular-Expression.info dédié aux expressions régulieres
  • Un testeur d’expressions régulières en ligne

Comment rechercher du texte à partir d’une expression régulière en Java ?

Méthode 1 – Avec Pattern & Matcher

On recherche la position du mot “Peugeot” dans la phrase “La 504 Peugeot: Une Peugeot d’exception”.

  1. String motif = "Peugeot";
  2. String chaine = "La 504 Peugeot: Une Peugeot d'exception";
  3.  
  4. Pattern p = Pattern.compile(motif);
  5. Matcher m = p.matcher(chaine);
  6.  
  7. while(m.find()) {
  8.     System.out.println("Position: " + m.start() + "-" + m.end());
  9. }

Affichera:
Position: 7-14
Position: 20-27

Souvenez vous que les positions sont 0-based.

Méthode 2 – Avec Scanner

Avec cette méthode, on cherche tous les mots correspondant au motif.

  1. String motif = "Peugeot";
  2. String chaine = "La 504 Peugeot: Une Peugeot d'exception";
  3.  
  4. Scanner s = new Scanner(chaine);
  5. String token;
  6. do {
  7.     token = s.findInLine(motif);
  8.     System.out.println("Element: " + token);
  9. } while (token != null);

Affichera:

Element: Peugeot
Element: Peugeot
Element: null

Méthode 3 – Verifie qu’une chaine correspond exactement à un motif

A la différence des autres méthodes, on ne recherche pas un motif, on le confirme!

  1. String motif = "[0-9]+";
  2. String chaine = "65844";
  3.  
  4. if(chaine.matches(motif) ){
  5.     System.out.println("est une suite de chiffre");
  6. }else{
  7.     System.out.println("Autre");
  8. }

Affichera:
est une suite de chiffre

Modèle d’expression régulière utile en Java

Username

Nous allons tacher de valider ou de reconnaitre ce qui pourrait bien être un login… seulement des minuscules, des chiffres, l’utilisation de _ ou de -, mais pas de caractères spéciaux et faisant entre 5 et 15 caractères.

  1. String motif = "[a-z0-9_-]{5,15}";
  2. String chaine = "Login: newic500";

Méthode 1:
Position: 7-15
Méthode 2:
Element: newic500
Element: null

Adresse E-Mail

  1. String motif = "(\\w+)@(\\w+\\.)(\\w+)(\\.\\w+)*";
  2. String chaine = "Mon email: nospam@spam.com";

Téléphone

Recherche un numéro de téléphone au format français: formé de 5 blocs de 2 chiffres avec n’importe quel caractere entre chaque bloc.

  1. String motif = "([0-9]{2}.){4}[0-9]{2}";
  2. String chaine = "Mon tel est le 01-03-74-96-11";

Méthode 1:

Position: 15-29

Méthode 2:
Element: 01-03-74-96-11
Element: null

Adresse IP

Retrouver la forme d’une adresse IP. Attention, une IP 999.999.999.999, techniquement impossible, pourrait etre déclaré valide avec ce modèle

  1. String motif = "[0-9]{1,3}(?:.[0-9]{1,3}){3}";
  2. String chaine = "Mon IP est 192.168.0.1";

Méthode 1:
Position: 11-22

Méthode 2:
Element: 192.168.0.1
Element: null

Adresse principale d’un site web.

  1. String motif = "[a-z]{3,}://[a-z0-9-]+.[.a-z0-9-]+(?::[0-9]*)?";
  2. String chaine = "Mon site est http://5.freshminutes.it/index.php";

Méthode 1:
Position: 13-35

Méthode 2:
Element: http://5.freshminutes.it
Element: null

Sources:

  • Some common regular expressions
  • Labo Sun


Catégories
Dévelopement Tips, Java, Tutoriel
Tags
expression réguliere, Java, regex
Flux rss des commentaires
Flux rss des commentaires
Trackback
Trackback

« Tutoriel – Les bases de l’outil JAR et du compiler Java SpringOne en Belgique et Soirée Spring au JUG de Paris »

Leave a Reply

Cliquer ici pour annuler la réponse.

Articles récents

  • Optimiser le temps de chargement pour le web mobile avec iPhone, jQTouch, Struts 2 et Tomcat
  • La philosophie du Domain Driven Design User Group et l’état des lieux * Users Group en Février 2010
  • Introduction au NoSQL (et de Redis) ou le compte rendu du NoSQL User Group Paris de Février 2010
  • Gérer le Cache-Control HTTP dans une application Web Java EE avec Tomcat
  • Compiler son code? “It’s so 2000s” ou un apercu de Play et JRebel
  • Le blog change d’adresse
  • Le Paris JUG a fêté ses 2 ans: compte-rendu
  • Activer la compression GZip sur votre serveur Tomcat, afin d’optimiser le temps de chargement de vos pages

Navigation

  • Actualités Flux pour tous les articles classés dans Actualités
  • Architecture IT Flux pour tous les articles classés dans Architecture IT
  • Base de données Flux pour tous les articles classés dans Base de données
  • Java Flux pour tous les articles classés dans Java
    • Dévelopement Tips Flux pour tous les articles classés dans Dévelopement Tips
    • EDI Flux pour tous les articles classés dans EDI
    • J2ME Flux pour tous les articles classés dans J2ME
    • J2SE Flux pour tous les articles classés dans J2SE
    • Java EE Flux pour tous les articles classés dans Java EE
    • Tutoriel Flux pour tous les articles classés dans Tutoriel
  • Non classé Flux pour tous les articles classés dans Non classé
  • NoSQL Flux pour tous les articles classés dans NoSQL

Promo

Mots Clefs

adobe apache application web Base de données benchmark bugs c# checkstyle dérivation eclipse find bugs findbugs flex framework play google gzip http iPhone jar Java Java User Group java web start JVM microsoft mysql object objet open source optimisation oracle performance plugin pmd polymorphisme qualité recrutement rich internet application serveur silverlight struts struts 2 sun test Tomcat web

WP Cumulus Flash tag cloud by Roy Tanck and Luke Morton requires Flash Player 9 or better.

Twitter

  • http://twitpic.com/184m0u - Plus de JIRA, le week-end peut commencer! 13 hrs ago
  • More updates...

Livres Pour Aller Plus Loin…

Blogoliste

  • Berthou.com
  • Le blog de hugu
  • PHP – Le Blog de Fatiha
  • techno.blog(java4it)
Get Adobe Flash playerPlugin by wpburn.com wordpress themes
rss Flux rss des commentaires valid xhtml 1.1 design by jide powered by Wordpress get firefox