Cos'è una Regex in Java?

Un'espressione regolare o regex è una sequenza di caratteri che formano uno schema. Quando cerchi dati puoi utilizzare questo modello specializzato per trovare stringhe corrispondenti. Può essere semplice come un singolo carattere o può essere uno schema più complesso. In Java, hai un pacchetto regex Java che contiene classi che forniscono la possibilità di utilizzare espressioni regolari per la ricerca e la manipolazione di pattern. Questo pacchetto viene importato nel codice nel modo seguente.
import java.util.regex.*;

Java Regex - Corrispondente

La classe Java Matcher fornisce la corrispondenza dei modelli con le espressioni regolari.
Questa riga di codice importa tutte le classi disponibili nel pacchetto regex. Se vuoi importare solo la classe Matcher puoi importarla utilizzando la seguente riga di codice.
import java.util.regex.Matcher;
Il pacchetto regex Java ha tre classi:
  1. Classe Pattern : per definire il pattern che deve essere cercato.

  2. Classe Matcher : per abbinare il modello nel testo e trovarlo.

  3. Classe PatternSyntaxException : per indicare eventuali errori di sintassi nell'espressione regolare.

Il suo funzionamento è abbastanza semplice. Innanzitutto, crei un oggetto Pattern dall'espressione regolare per definire un modello. Quindi viene creato un oggetto Matcher utilizzando l'oggetto Pattern . La classe Matcher ha molti metodi. Il più importante di questi è il metodomatch() che restituisce true se l'espressione regolare corrisponde al testo, altrimenti restituisce false . Java Matcher Class ha molti altri metodi utili per sostituire il testo nelle stringhe di input che eseguono funzioni più complesse rispetto ai metodi replace() in Java. Esistono solo due metodi replace() in Java, mentre la classe Matcher fornisce più funzioni per questa attività.

Metodi della classe Java Matcher

Alcuni dei metodi Java Matcher Class sono descritti di seguito.
  • booleanmatch() — restituisce vero se l'espressione regolare corrisponde al modello.

  • boolean find() : trova la successiva espressione regolare che corrisponde al modello.

  • boolean find(int start) — trova la successiva espressione regolare che corrisponde al modello dall'inizio indicato.

  • int start() — restituisce l'indice iniziale della corrispondenza.

  • int end() — restituisce l'indice finale della corrispondenza restituita.

  • int groupCount() — restituisce il numero totale di gruppi nella partita.

  • String replaceAll(String replace) — sostituisce ogni sottosequenza della corrispondenza con la sostituzione data.

  • String replaceFirst(String replace) — sostituisce la prima sottosequenza della corrispondenza con la sostituzione data.

Esempio di corrispondenza Java

Esistono molti metodi utili per la classe Matcher , tuttavia esamineremo ulteriormente gli esempi specifici del metodomatch() .

Utilizzando il metodomatch()

Di seguito viene illustrato un esempio di Java Matcher per il metodomatch() .
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Example {

	public static void main(String[] args) {

		String regexPattern = "(.*)apple(.*)"; // this regex means that any char sequence can precede or succeed "apple"
		String firstCheck = "Apples";
		String secondCheck = "Apple";
		String thirdCheck = "apple";
		String fourthCheck = "An apple a day keeps the doctor away.";
		String fifthCheck = "green apple, yellow apple, red apple, i love all kinds of apples.";


		Pattern pattern = Pattern.compile(regexPattern);
		Matcher matcher1 = pattern.matcher(firstCheck);

		System.out.println("The Pattern  is: " + pattern);
		System.out.println("Text to check is: " + firstCheck);
		System.out.println("Output for matches(): " + matcher1.matches() + "\n");

		Matcher matcher2 = pattern.matcher(secondCheck);

		System.out.println("The Pattern  is: " + pattern);
		System.out.println("Text to check is: " + secondCheck);
		System.out.println("Output for matches(): " + matcher2.matches() + "\n");

		Matcher matcher3 = pattern.matcher(thirdCheck);

		System.out.println("The Pattern  is: " + pattern);
		System.out.println("Text to check is: " + thirdCheck);
		System.out.println("Output for matches(): " + matcher3.matches() + "\n");

		Matcher matcher4 = pattern.matcher(thirdCheck);

		System.out.println("The Pattern  is: " + pattern);
		System.out.println("Text to check is: " + fourthCheck);
		System.out.println("Output for matches(): " + matcher4.matches() + "\n");

		Matcher matcher5 = pattern.matcher(fifthCheck);

		System.out.println("The Pattern  is: " + pattern);
		System.out.println("Text to check is: " + fifthCheck);
		System.out.println("Output for matches(): " + matcher5.matches() + "\n");
	}
}
Produzione
Il modello è: (.*)apple(.*) Il testo da controllare è: Apples Output formatchs(): false Il modello è: (.*)apple(.*) Il testo da controllare è: Apple Output formatches() : false Il modello è: (.*)apple(.*) Il testo da controllare è: apple Output permatch(): true Il modello è: (.*)apple(.*) Il testo da controllare è: Una mela al giorno tiene lontano il medico. Output permatch(): true Il modello è: (.*)apple(.*) Il testo da controllare è: mela verde, mela gialla, mela rossa, adoro tutti i tipi di mele. Output per corrispondenze(): true

Conclusione

Entro la fine di questo post, speriamo che tu abbia familiarizzato con la classe Java Matcher in Java. Hai imparato come usarlo nel tuo codice. Hai anche imparato a chiamare il metodomatch() della Matcher Class. Puoi provare tu stesso altri metodi della Matcher Class per capirlo più in profondità. Continua a esercitarti per una padronanza più profonda del concetto. Fino ad allora, continua a crescere e a brillare!