Corrispondenza di pattern con le regex
Fa parte della sezione Logica e flusso del percorso Java di Coddy. Lezione 47 di 59.
Le classi Pattern e Matcher forniscono potenti strumenti per le operazioni con le espressioni regolari in Java. Per prima cosa, vediamo come usarle:
Crea un pattern usando Pattern.compile():
Pattern pattern = Pattern.compile("cat");
// Crea un pattern per trovare "cat"Crea un matcher per il tuo testo:
String text = "The cat and dog";
Matcher matcher = pattern.matcher(text);
// Crea un matcher per il testoOra puoi trovare le corrispondenze usando matcher.find():
while (matcher.find()) {
System.out.println("Found at: " + matcher.start());
}Dopo aver eseguito il codice qui sopra, l'output è: Found at: 4
Comprendere i metodi:
matcher.find()- Cerca la successiva occorrenza del modello nel testo- Restituisce
truese viene trovata una corrispondenza - Restituisce
falsese non ci sono altre corrispondenze - Ecco perché lo usiamo in un ciclo
while- per trovare tutte le occorrenze
- Restituisce
matcher.start()- Restituisce l'indice iniziale (posizione) dell'ultima corrispondenza trovata dafind()- Nel nostro esempio, "cat" inizia all'indice 4 in "The cat and dog"
- Deve essere chiamato dopo una chiamata riuscita a
find()
Esempio con corrispondenze multiple:
Pattern pattern = Pattern.compile("cat");
Matcher matcher = pattern.matcher("cat and cat");
while (matcher.find()) {
System.out.println("Found at: " + matcher.start());
}
// Risultato:
// Found at: 0
// Found at: 8Sfida
FacileCrea un metodo chiamato findWords che accetta due argomenti:
- Una String (
text) in cui cercare - Una String (
word) da trovare
Il metodo dovrebbe:
- Usare Pattern e Matcher per trovare tutte le occorrenze della parola
- Restituire una stringa contenente le posizioni in cui è stata trovata la parola
- Le posizioni devono essere separate da spazi
I messaggi restituiti dovrebbero essere:
- Se un input è null: restituisci "Invalid input"
- Se la parola non viene trovata: restituisci "Not found"
- Se viene trovata: restituisci le posizioni (ad es., "4 10 15")
Provalo tu
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) {
// Scrivi il tuo codice qui
}
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));
}
}Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Array multidimensionali
Concetti di base degli array 2DAccesso agli elementi degli array 2DCicli annidati con array 2DRiepilogo - Array 2DAddizione e sottrazione di matriciArray irregolariArray 3D e oltreSchemi comuni degli array 2DRiepilogo - Tutto sugli array4HashSet Parte 1
Che cos'è un HashSet?Aggiungere un elementoRimuovere un elementoVerificare se un elemento esisteVuoto e dimensioneSvuotare e clonareRipasso - HashSet7Gestione di base degli errori
Nozioni di base su try-catchBlocco finallyLancio di eccezioniEccezioni personalizzate2HashMap Parte 1
Che cos'è una HashMap?Dichiarare una HashMapAccedere ai valoriVerificare se una chiave esisteModificare i dizionariRiepilogo - HashMap5HashSet Parte 2
Matematica - Unione di HashSetMatematica - Intersezione di HashSetMatematica - Differenza tra insiemiMatematica - Differenza simmetricaSottoinsiemi e sovrainsiemiIterare sugli insiemi8Operazioni avanzate sulle stringhe
Fondamenti di StringBuilderIntroduzione a StringBufferFondamenti delle espressioni regolariCorrispondenza di pattern con le regexTokenizer di stringheFormattazione avanzata delle stringhe3HashMap Parte 2
Metodi di HashMapIterare con keySet()Iterare con entrySet()HashMap annidateRiepilogo - Gestire il magazzinoRiepilogo - Operazioni con HashMap6Flusso di controllo avanzato
Istruzioni con etichettaEspressione switchCorrispondenza dei patternClausole guardiaRiepilogo - Flusso di controllo9Progetto - Contatore di parole uniche
Inserimento e memorizzazione del testoElaborazione delle paroleEsercitati da solo: Compilatore Java online