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 texteVous 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
truesi une correspondance est trouvée - Renvoie
falses'il n'existe plus de correspondances - C'est pourquoi nous l'utilisons dans une boucle
while- pour trouver toutes les occurrences
- Renvoie
matcher.start()- Renvoie l'index de début (la position) de la dernière correspondance trouvée parfind()- 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é à : 8Défi
FacileCréez une méthode nommée findWords qui accepte deux arguments :
- Une String (
text) dans laquelle effectuer la recherche - Une String (
word) à trouver
La méthode doit :
- Utiliser Pattern et Matcher pour trouver toutes les occurrences du mot
- Retourner une chaîne contenant les positions où le mot a été trouvé
- 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));
}
}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
1Tableaux multidimensionnels
Bases des tableaux 2DAccès aux éléments des tableaux 2DBoucles imbriquées avec les tableaux 2DRécapitulatif - Tableaux 2DAddition et soustraction de matricesTableaux irréguliersTableaux 3D et au-delàMotifs courants des tableaux 2DRécapitulatif - Tout sur les tableaux4HashSet Partie 1
Qu'est-ce qu'un HashSet ?Ajouter un ÉlémentSupprimer un ÉlémentVérifier si un Élément ExisteVide et TailleVider et ClonerRécapitulatif - HashSet7Gestion des erreurs de base
Bases du try-catchBloc finallyLever des exceptionsExceptions personnalisées2HashMap Partie 1
Qu'est-ce qu'une HashMap ?Déclarer une HashMapAccéder aux ValeursVérifier si une Clé ExisteModifier les DictionnairesRécapitulatif - HashMap5HashSet Partie 2
Math - Union des HashSetsMath - Intersection des HashSetsMath - Différence d'ensemblesMath - Différence symétriqueSous-ensembles et super-ensemblesItération sur les ensembles8Opérations avancées sur les chaînes
Bases de StringBuilderIntroduction à StringBufferBases des expressions régulièresAppariement de motifs avec RegexTokenizer de chaînesFormatage avancé des chaînes3HashMap Partie 2
Méthodes HashMapItérer avec keySet()Itérer avec entrySet()HashMap imbriquéRécapitulatif - Gérer l'entrepôtRécapitulatif - Opérations HashMap6Flux de contrôle avancé
Instructions étiquetéesExpression switchAppariement de motifsClauses de gardeRécapitulatif - Flux de contrôle9Projet - Compteur de Mots Uniques
Entrée de Texte et StockageTraitement des MotsEntraînez-vous par vous-même : Compilateur Java en ligne
Testez un motif sur votre propre texte : Testeur de Regex