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")

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