Menu
CoddyTech

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 d’expressions régulières en Java. Commençons par comprendre comment les utiliser :

Créez un pattern à l’aide de 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);
// Crée un matcher pour le texte

Vous pouvez maintenant trouver des correspondances à l’aide de matcher.find() :

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

Après avoir exécuté le code ci-dessus, la sortie est : Found at: 4

Comprendre les méthodes :

  • matcher.find() - Recherche la prochaine occurrence du motif dans le texte
    • Renvoie true si une correspondance est trouvée
    • Renvoie false s'il n'existe plus de correspondances
    • C'est pourquoi nous l'utilisons dans une boucle while - pour trouver toutes les occurrences
  • matcher.start() - Renvoie l'index de début (la position) de la dernière correspondance trouvée par find()
    • Dans notre exemple, "cat" commence à l'index 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());
}
// Sortie :
// Trouvé à : 0
// Trouvé à : 8
challenge icon

Défi

Facile

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

  1. Une String (text) dans laquelle effectuer la recherche
  2. Une String (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 retournés doivent être :

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

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

Entraînez-vous par vous-même : Compilateur Java en ligne

Testez un motif sur votre propre texte : Testeur de Regex