English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Java Regex中的matchs()和find()有什么区别?

iljava.util.regex.MatcherLa classe rappresenta un motore che esegue vari operazioni di abbinamento. Questa classe non ha costruttore, può essere utilizzatamatches()Il metodo della classe java.util.regex.Pattern per creare/ottenere un oggetto di questa classe.

dueabbinare()etrovare()dei tentativi del metodo Matcher della classe per trovare corrispondenze in base all'espressione regolare nella stringa di input. Se c'è una corrispondenza, entrambi restituiscono true, se non si trova una corrispondenza, entrambi i metodi restituiscono false.

La differenza principale sta nelmatches()Il metodo tenta di abbinare l'intera area di input fornita, ossia, se si cerca un numero in una riga, questo metodo restituisce true solo se il numero si trova in tutte le righe dell'area di input.

Esempio 1

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
   public static void main(String[] args) {
      String regex = "(.*)(\\d+)(.*)";
      String input = "Questo è un testo di esempio, 1234, con numeri tra di loro.";
         + "\n	Questa è la seconda riga del testo"
         + "\n	Questa è la terza riga del testo"
      //Creare un oggetto Pattern
      Pattern pattern = Pattern.compile(regex);
      //Creare un oggetto Matcher
      Matcher matcher = pattern.matcher(input);
      if(matcher.matches()) {
         System.out.println("Trovato");
      } else {
         System.out.println("Non trovato");
      }
   }
}

Output dei risultati

non trovato

mentre ilfind()Il metodo tenta di trovare il successivo sottostringa che corrisponde al modello, ossia, se si trova almeno una corrispondenza in questa area, questo metodo restituisce true.

Se si guarda l'esempio seguente, proviamo a abbinare la riga specifica con il numero centrale.

Esempio 2

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
   public static void main(String[] args) {
      String regex = "(.*)(\\d+)(.*)";
      String input = "Questo è un testo di esempio, 1234, con numeri tra di loro.";
         + "\n	Questa è la seconda riga del testo"
         + "\n	Questa è la terza riga del testo"
      //Creare un oggetto Pattern
      Pattern pattern = Pattern.compile(regex);
      //Creare un oggetto Matcher
      Matcher matcher = pattern.matcher(input);
      //System.out.println("Intervallo corrente: " + input.substring(regStart, regEnd));
      if(matcher.find()) {
         System.out.println("Trovato");
      } else {
         System.out.println("Non trovato");
      }
   }
}

Output dei risultati

Trovare l'elemento corrispondente