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

В чем разница между matchs() и find() в Java Regex?

текстиз java.util.regex.Matcherкласс представляет собой движок, выполняющий различные операции соответствия. Этот класс не имеет конструктора, его можно использоватьmatches()класс java.util.regex.Pattern создает/получает объект этого класса.

двасоответствовать()иобнаружить()попытке класса Matcher найти соответствие с помощью регулярного выражения в вводе. Если есть соответствие, то оба метода возвращают true, если не найти соответствие, то оба метода возвращают false.

Основное различие заключается в томmatches()Метод пытается соответствовать всему диапазону ввода, то есть, если вы пытаетесь найти цифру в строке, то этот метод возвращает true только если ввод содержит цифры во всех строках.

Пример 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 = "This is a sample Text, 1234, with numbers in between.";
         + "\n This is the second line in the text"
         + "\n This is third line in the text"
      //Создание объекта шаблона
      Pattern pattern = Pattern.compile(regex);
      //Создание объекта Matcher
      Matcher matcher = pattern.matcher(input);
      if(matcher.matches()) {
         System.out.println("Найдено совпадение");
      }
         System.out.println("Не найдено совпадение");
      }
   }
}

Вывести результат

не найти соответствие

а этоfind()Метод пытается найти следующий подстроку, соответствующую шаблону, то есть, если в этой области найден хотя бы один соответствующий элемент, то этот метод возвращает true.

Если посмотрите на следующий пример, то мы пытаемся соответствовать определенной строке с числом в середине.

Пример 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 = "This is a sample Text, 1234, with numbers in between.";
         + "\n This is the second line in the text"
         + "\n This is third line in the text"
      //Создание объекта шаблона
      Pattern pattern = Pattern.compile(regex);
      //Создание объекта Matcher
      Matcher matcher = pattern.matcher(input);
      //System.out.println("Текущий диапазон: "+input.substring(regStart, regEnd));
      if(matcher.find()) {
         System.out.println("Найдено совпадение");
      }
         System.out.println("Не найдено совпадение");
      }
   }
}

Вывести результат

Найти совпадение
Вам может понравиться