Utiliser les classes Pattern et Matcher
Dans cette étape, vous apprendrez à utiliser la classe Matcher
avec votre Pattern
pour trouver les occurrences du modèle dans une chaîne d'entrée donnée.
Comme nous l'avons vu dans l'étape précédente, la classe Pattern
représente l'expression régulière compilée. La classe Matcher
est utilisée pour effectuer les opérations de recherche sur une chaîne d'entrée spécifique en utilisant ce modèle compilé.
Voici comment le processus fonctionne généralement :
- Compiler l'expression régulière : Créez un objet
Pattern
à partir de votre chaîne d'expression régulière en utilisant Pattern.compile()
.
- Créer un Matcher : Obtenez un objet
Matcher
en appelant la méthode matcher()
sur l'objet Pattern
et en passant la chaîne d'entrée dans laquelle vous souhaitez effectuer la recherche.
- Effectuer la correspondance : Utilisez les méthodes de l'objet
Matcher
pour trouver les correspondances. Les méthodes courantes incluent find()
(pour trouver la prochaine correspondance) et matches()
(pour vérifier si l'ensemble de la chaîne d'entrée correspond au modèle).
Modifions notre programme HelloJava.java
pour utiliser un Matcher
afin de trouver le mot "Java" dans une phrase d'exemple.
-
Ouvrez le fichier HelloJava.java
dans l'éditeur WebIDE.
-
Remplacez le code existant par le code suivant :
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class HelloJava {
public static void main(String[] args) {
// Define a simple regex pattern to match the word "Java"
String regexPattern = "Java";
// The input string to search within
String inputString = "Hello, Java! Welcome to Java programming.";
// Compile the regex pattern
Pattern pattern = Pattern.compile(regexPattern);
// Create a Matcher object
Matcher matcher = pattern.matcher(inputString);
// Find and print the matches
System.out.println("Searching for pattern: '" + regexPattern + "' in string: '" + inputString + "'");
while (matcher.find()) {
System.out.println("Found match at index: " + matcher.start());
}
}
}
Voici ce qui est nouveau :
import java.util.regex.Matcher;
: Nous importons la classe Matcher
.
String inputString = "Hello, Java! Welcome to Java programming.";
: Nous définissons la chaîne dans laquelle nous souhaitons effectuer la recherche.
Matcher matcher = pattern.matcher(inputString);
: Nous créons un objet Matcher
en appelant la méthode matcher()
sur notre objet pattern
et en passant la inputString
.
while (matcher.find()) { ... }
: Cette boucle utilise la méthode find()
du Matcher
. La méthode find()
tente de trouver la prochaine sous-séquence de la séquence d'entrée qui correspond au modèle. Elle renvoie true
si une correspondance est trouvée, et false
sinon. La boucle while
continue tant que find()
renvoie true
.
System.out.println("Found match at index: " + matcher.start());
: À l'intérieur de la boucle, si une correspondance est trouvée, matcher.start()
renvoie l'indice de départ de la sous-séquence correspondante dans la chaîne d'entrée. Nous affichons cet indice.
-
Enregistrez le fichier (Ctrl+S ou Cmd+S).
-
Compilez le programme modifié dans le Terminal :
javac HelloJava.java
-
Exécutez le programme compilé :
java HelloJava
Vous devriez voir une sortie similaire à celle-ci :
Searching for pattern: 'Java' in string: 'Hello, Java! Welcome to Java programming.'
Found match at index: 7
Found match at index: 27
Cette sortie montre que notre programme a réussi à trouver deux occurrences du mot "Java" dans la chaîne d'entrée, et qu'il a affiché l'indice de départ de chaque correspondance.
Vous avez maintenant utilisé avec succès les classes Pattern
et Matcher
pour trouver un modèle spécifique dans une chaîne. Dans l'étape suivante, nous allons rendre ce programme interactif en permettant à l'utilisateur d'entrer la chaîne à rechercher.