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

ما هو الفرق بين matchs() و find() في Regex Java؟

النصهذامن java.util.regex.Matchermatches()طريقة java.util.regex.Pattern لإنشاء/الحصول على موضوع هذا الفئة. تمثل هذه الفئة محركًا، يقوم بعمليات مطابقة متعددة. لا تحتوي هذه الفئة على مُنشئ، يمكن استخدام

الاثنينمطابقة()والاكتشاف()يحاول طريقة Matcher class للحصول على مطابقة بناءً على تعبير النمط في السلسلة الإدخالية. إذا كانت هناك مطابقة، فإنهما يعودان بالقيمة 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("找到匹配项");
      } else {
         System.out.println("找不到匹配项");
      }
   }
}

إخراج النتائج

لا يمكن العثور على مطابقة

ولكن هذاfind()يحاول الطريقة العثور على التالي substring مطابقة النمط، بمعنى آخر، إذا تم العثور على على الأقل إحدى المطابقات في هذا المجال، فإن هذه الطريقة تعود بالقيمة 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("找到匹配项");
      } else {
         System.out.println("找不到匹配项");
      }
   }
}

إخراج النتائج

إيجاد الصفحة المطابقة
أنت قد تحب