Blog ENI : Toute la veille numérique !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
💥 Les 22 & 23 novembre : Accès 100% GRATUIT
à la Bibliothèque Numérique ENI. Je m'inscris !
  1. Livres et vidéos
  2. Expressions régulières
  3. Les expressions régulières en Java
Extrait - Expressions régulières Syntaxe et mise en œuvre (avec exercices et corrigés) (2e édition)
Extraits du livre
Expressions régulières Syntaxe et mise en œuvre (avec exercices et corrigés) (2e édition) Revenir à la page d'achat du livre

Les expressions régulières en Java

Généralités 

Le langage Java a été créé en 1991 chez Sun Microsystems par une équipe constituée de James Gosling, Patrick Naughton, Mike Sheridan et quelques autres développeurs. C’est un langage orienté objet avec une syntaxe proche du C++. Son but était d’être plus universel et plus facile à apprendre que le C ou le C++, tout en possédant une syntaxe proche de ces derniers langages afin de permettre un apprentissage rapide, et de rendre possible la création de code embarqué dans de petits appareils et des systèmes distribués. Il a connu une forte croissance et possède toujours une forte popularité, bien que celle-ci semble toutefois être en léger déclin depuis quelques années. Du statut initial de langage, il est passé depuis quelques années au statut de technologie puisqu’il est associé au JDK (Java Development Kit), au JRE (Java Runtime Environment) et à la JVM (Java Virtual Machine) qui forment un environnement de développement et d’exécution. Le code produit par le compilateur Java génère un code intermédiaire (bytecode) qui doit être traduit par la machine virtuelle Java pour pouvoir être exécuté. Java est maintenant utilisé dans de très nombreux environnements...

Les expressions régulières

Les expressions régulières utilisées par Java sont proches du standard PCRE, mais elles apportent quelques syntaxes nouvelles ou comportent parfois des différences mineures, et le fait d’utiliser ces syntaxes spécifiques peut conduire à des difficultés de portage vers d’autres langages. Il est donc conseillé de les éviter autant que possible et de préférer les expressions dont la syntaxe est comprise par une majorité d’interpréteurs.

Toutefois, pour ceux qui souhaiteraient utiliser les expressions de type Java, cette syntaxe est décrite dans le chapitre Synthèse des types d’expressions dans une section dédiée à Java.

En ce qui concerne l’utilisation des expressions régulières, celles-ci sont compilées par une fonction dédiée, puis l’expression compilée peut être utilisée par des méthodes de recherche de correspondances ou de substitution de chaînes, comme cela existe dans d’autres langages.

Manipulation des expressions régulières

Les fonctions que nous aborderons dans ce chapitre font partie du package java.util.regex.

Dans tous les exemples qui seront donnés, il faudra utiliser l’en-tête standard suivant :

import java.util.regex.Pattern;  
import java.util.regex.Matcher; 

Ce dernier ne sera pas répété dans les exemples de façon à les simplifier.

Pour compiler un programme Java exemple.java, il faudra utiliser la commande suivante :

$ javac exemple.java 

Son exécution sera réalisée par la commande :

$ java exemple 

1. Compilation d’expression régulière 

Fonction Pattern.compile() 

La méthode Pattern.compile() compile une expression régulière passée sous la forme d’un objet de type String et retourne un objet de type Pattern, ou provoque une exception si l’expression est incorrecte et ne peut être compilée. L’objet retourné peut ensuite être utilisé pour appeler les méthodes permettant d’effectuer des recherches de correspondances, des substitutions, des découpages de chaînes, etc.

Syntaxe

String  regex   = "expression_régulière"; 
Pattern pattern = Pattern.compile(regex); 

Exemple

String regex = "(?<year>\\d{4})-(?<month>\\d{2})-(?<day>\\d{2})"; 
Pattern pattern = Pattern.compile(regex); 

2. Recherche de chaînes 

a. Fonction Pattern.matcher() 

La méthode Pattern.matcher() accepte en paramètre une chaîne de caractères et retourne un objet de type Matcher qui peut servir à déterminer s’il y a une correspondance entre l’expression régulière et la chaîne de caractères passée, à trouver des correspondances, à extraire des chaînes correspondant à des fragments de l’expression, etc.

Syntaxe

String text     = "texte à analyser";  
Matcher matcher = pattern.matcher(text); 

Exemple

String regex = "(?<year>\\d{4})-(?<month>\\d{2})-(?<day>\\d{2})"; 
String text  = "2024-05-25";  
  
Pattern pattern = Pattern.compile(regex);  
Matcher matcher...