Galactic Civilizations 3
Utiliser des expressions régulières en Java

Utiliser des expressions régulières en Java

Catégorie: Programmation.
Posté par le 04/03/2014.
Dernière mise à jour le 27/04/2014.

<<Tutoriel précédent    Tutoriel suivant>>

Description

Ce tutoriel explique comment parser une chaine de caractères avec une expression régulière en Java à l'aide des classes Pattern et Matcher.

Introduction

Ce tutoriel peut être réalisé à l'aide d'un simple éditeur de texte comme le  « bloc note » ou d'un IDE tels « qu'Eclipse » ou  « Netbeans ». Il nécessite des connaissances de base en Java.

Construction de l'objet Matcher

Afin de parser une chaine de caractères, nous allons utiliser une instance de l'objet Matcher.

Pour savoir comment construire l'objet Matcher, vous pouvez lire le tutoriel qui explique comment créer une expression régulière et générer l'objet Matcher.

Parser la chaine de caractères

Finalement nous appelons la méthode « matches() » afin de vérifier la correspondance avec l'expression régulière.

Cette méthode retourne un booléen indiquant si la chaine de caractères correspond à l'expression régulière.

Voici un exemple:

public void main(String args[]) {
  String str = "abc007de02abxx3";
  Pattern patt = Pattern.compile("[0-9]+");
  Matcher m = patt.matcher(str);
  if(m.matches()){
    System.out.println("ok");
  }
}

Groupe de capture

Si vous avez besoin de récupérer le token qui correspond au pattern ou d'utiliser un groupe de capture dans l'expression régulière, vous pouvez utiliser la méthode « group() » du Matcher. Voici un exemple:

public void main(String args[]) {
  String str = "abc007de02abxx3";
  Pattern patt = Pattern.compile("[0-9]+");
  Matcher m = patt.matcher(str);
  while(m.matches()){
    System.out.println(m.group);
    // 007 03 3
  }
}

NB: Si vous utiliser un regex avec *, une chaine vide sera retournée.

Voici un autre exemple utilisant un groupe de capture:

public void main(String args[]) {
  String str = "abc007de02abxx3";
  Pattern patt = Pattern.compile("[0-9]+(ab)");
  Matcher m = patt.matcher(str);
  while(m.matches()){
    System.out.println(m.group);
    // 02ab
  }
}

Vous pouvez également utiliser la méthode « start() » afin de récupérer l'index du token dans la chaine de caractères.

Voici un exemple:

public void main(String args[]) {
  String str = "abc007de02abxx3";
  Pattern patt = Pattern.compile("[0-9]+");
  Matcher m = patt.matcher(str);
  while(m.matches()){
    System.out.println(m.start);
    // 3814
  }
}

NB: Si vous utilisez un regex avec *, le caractères de fin de chaine de caractère (\0) sera pris en considération.

Voici un exemple:

public void main(String args[]) {
  String str = "abc007de02abxx3";
  Pattern patt = Pattern.compile("[0-9]*");
  Matcher m = patt.matcher(str);
  while(m.matches()){
    System.out.println(m.start);
    // 0123456789101112131415
  }
}

Tu as aimé ce tutoriel ?
Aide nous à améliorer le site ! Deviens partenaire officiel ou suis nous sur facebook !

<<Tutoriel précédent    Tutoriel suivant>>

Commentaires[0]

Tu as aimé ce tutoriel ? Alors partage-le avec tes amis !
Partager sur Facebook Partager sur Twitter Partager sur Myspace Partager sur Stumbleupon Soumettre sur Reddit Partager sur Digg Ajouter à vos favoris Technorati Ajouter à vos favoris Live Ajouter à vos favoris Google Ajouter sur vos favoris Yahoo Voir le flux rss

Mots Clés: expression régulière Java regex

Veve :
(11/04/2013 - 17:19:44)
il faut juste mettre "sudo" à la place de "su" pour exécuter la commande en root

Veve :
(11/04/2013 - 17:18:56)
Salut tu peux aller lire ce tutoriel: http://www.tutorielsenfolie.com/tutoriels-63-installation-configuration-opennebula.html Il fonctionne aussi sous ubuntu

safa.souissi4 :
(10/04/2013 - 20:58:13)
s'il vous plait c urgent :(

safa.souissi4 :
(10/04/2013 - 20:56:25)
bonsoir,je cherche un tutos pour installer opennebula.org sous ubuntu 12.

Veve :
(18/03/2013 - 20:07:49)
oui, j'essaye de voir d'ou viens le problème.

sonde :
(18/03/2013 - 13:29:57)
re merci (j apprend un peu plus) je crois que j ai trouver pourquoi je peu pas poster si il y a ligne code impossible de poster lol

Veve :
(17/03/2013 - 21:34:49)
Salut, j'espère que ça t'a aidé.

sonde :
(17/03/2013 - 09:59:02)
pour ton aide

sonde :
(17/03/2013 - 09:57:36)
slt Veve impossible de laisser com

sonde :
(17/03/2013 - 09:56:55)
??

Demi-dieu :
(15/03/2013 - 18:41:13)
salut ^^

sonde :
(13/03/2013 - 14:49:35)
un petit coucou

Tanamoureuse :
(29/09/2011 - 06:11:08)
Je t'aime

Faire un don

Ma Publicité ici


Faire un don