Menu
Coddy logo textTech

Appariement de motifs avec Regex

Fait partie de la section Logique & Flux du Journey Java de Coddy — leçon 47 sur 59.

Les classes Pattern et Matcher fournissent des outils puissants pour les opérations regex en Java. Tout d'abord, voyons comment les utiliser :

Créez un pattern en utilisant Pattern.compile() :

Pattern pattern = Pattern.compile("cat");
// Crée un motif pour trouver "cat"

Créez un matcher pour votre texte :

String text = "The cat and dog";
Matcher matcher = pattern.matcher(text);
// Creates a matcher for the text

Maintenant, vous pouvez trouver les correspondances avec matcher.find() :

while (matcher.find()) {
   System.out.println("Found at: " + matcher.start());
}

Après l'exécution du code ci-dessus, la sortie est : Found at: 4

Comprendre les méthodes :

  • <b>matcher.find()</b> - Recherche la prochaine occurrence du motif dans le texte
    • Retourne true si une correspondance est trouvée
    • Retourne false s'il n'y a plus de correspondances
    • C'est pourquoi nous l'utilisons dans une boucle while - pour trouver toutes les occurrences
  • <b>matcher.start()</b> - Retourne l'indice de départ (position) de la dernière correspondance trouvée par find()
    • Dans notre exemple, "cat" commence à l'indice 4 dans "The cat and dog"
    • Doit être appelé après un find() réussi

Exemple avec plusieurs correspondances :

Pattern pattern = Pattern.compile("cat");
Matcher matcher = pattern.matcher("cat and cat");

while (matcher.find()) {
   System.out.println("Found at: " + matcher.start());
}
// Output:
// Found at: 0
// Found at: 8
challenge icon

Défi

Facile

Créez une méthode nommée findWords qui prend deux arguments :

  1. Une chaîne de caractères (text) dans laquelle rechercher
  2. Une chaîne de caractères (word) à trouver

La méthode doit :

  1. Utiliser Pattern et Matcher pour trouver toutes les occurrences du mot
  2. Retourner une chaîne contenant les positions où le mot a été trouvé
  3. Les positions doivent être séparées par des espaces

Les messages de retour doivent être :

  • Si une entrée est null : retourner "Invalid input"
  • Si le mot n'est pas trouvé : retourner "Not found"
  • Si trouvé : retourner les positions (par ex., "4 10 15")

Aide-mémoire

Les classes Pattern et Matcher fournissent des outils puissants pour les opérations sur les expressions régulières en Java.

Créez un pattern en utilisant Pattern.compile() :

Pattern pattern = Pattern.compile("cat");
// Creates a pattern to find "cat"

Créez un matcher pour votre texte :

String text = "The cat and dog";
Matcher matcher = pattern.matcher(text);
// Creates a matcher for the text

Trouvez les correspondances en utilisant matcher.find() :

while (matcher.find()) {
   System.out.println("Found at: " + matcher.start());
}

Méthodes clés :

  • <b>matcher.find()</b> - Recherche la prochaine occurrence du motif
    • Retourne true si trouvé, false si plus de correspondances
    • Utilisez dans une boucle pour trouver toutes les occurrences
  • <b>matcher.start()</b> - Retourne l’indice de début de la dernière correspondance trouvée
    • Appelez après un find() réussi

Essayez vous-même

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

public class Main {
    public static String findWords(String text, String word) {
        // Écrivez votre code ici
    }
    
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String text = scanner.nextLine();
        String word = scanner.nextLine();
        
        if (text.equals("null")) text = null;
        if (word.equals("null")) word = null;
        
        System.out.println(findWords(text, word));
    }
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Logique & Flux