Programming Basics SQL HTML CSS JavaScript React Python C++ Java JavaFX Swing Problem Solving English English Conversations Computer Fundamentals Linux Learn Typing

Javaالدوال lookingAt() و find() و matches() في جافا

تعريفهم

lookingAt(): ترجع true إذا تم إيجاد تطابق بين كائن الـ Pattern و النص الذي نريد البحث فيه.
هذه الدالة تتوقف مباشرةً عن البحث عندما تجد أول تطابق.

find(): ترجع true إذا تم إيجاد أكثر من تطابق بين كائن الـ Pattern و النص الذي نريد البحث فيه.
هذه الدالة تبحث في النص كله من الحرف الأول إلى الحرف الأخير.
أي حتى لو تم إيجاد النص الذي تبحث عنه ستظل تحاول إيجاد تطابق حتى تمر على جميع أحرف النص.

matches(): ترجع true إذا تطابقت جميع أحرف النص مع أحرف كائن الـ Pattern.
أي في حال كان الـ Pattern يطابق كل النص الذي نريد البحث فيه.



بناؤهم

public boolean lookingAt()

public boolean find()

public boolean find(int start) // معين في حال لم ترد البحث من بداية النص index هذا الرقم يستخدم للبحث إبتداءاً من رقم

public boolean matches() 


أخطاء محتملة

  • IndexOutOfBoundsException: في حال وضعنا في الدالة find() رقم index كـ argument, و كان هذا الـ index غير موجود في النص.


المثال الأول

Main.java
import java.util.regex.Matcher;
import java.util.regex.Pattern;
 
public class Main {
 
    public static void main(String[] args) {
 
        String REGEX = "java";                                           // REGEX: هو النص الذي سنبحث عنه
        String INPUT = "java language, java is free, java is amazing";   // INPUT: هو النص الذي سنبحث فيه
 
        Pattern p = Pattern.compile(REGEX);   // Pattern ثم قمنا بتخزينه في كائن نوعه compile() باستخدام الدالة Pattern إلى REGEX قمنا بتحويل الـ
 
        Matcher m = p.matcher(INPUT);         // Matcher ثم قمنا بتخزينه في كائن نوعه INPUT على النص matcher() قمنا باستدعاء الدالة
 
        System.out.println( "lookingAt() \n return: " + m.lookingAt() + "\n" );   // INPUT موجود في النص Pattern لأن محتوى الـ true سترجع lookingAt() هنا الدالة
        System.out.println( "find() \n return: "      + m.find()      + "\n" );   // INPUT موجود أكثر من مرة في النص Pattern لأن محتوى الـ true سترجع find() هنا الدالة
        System.out.println( "matches() \n return: "   + m.matches()   + "\n" );   // INPUT لا يساوي كل المحتوى الموجود في النص Pattern لأن محتوى الـ false سترجع matches() هنا الدالة
 
    }
 
}

سنحصل على النتيجة التالية عند التشغيل.

lookingAt()
 return: true

find()
 return: true

matches()
 return: false


المثال الثاني

Main.java
import java.util.regex.Matcher;
import java.util.regex.Pattern;
 
public class Main {
 
    public static void main(String[] args) {
 
        String REGEX = "welcome to harmash.com";   // REGEX: هو النص الذي سنبحث عنه
        String INPUT = "welcome to harmash.com";   // INPUT: هو النص الذي سنبحث فيه
 
        Pattern p = Pattern.compile(REGEX);   // Pattern ثم قمنا بتخزينه في كائن نوعه compile() باستخدام الدالة Pattern إلى REGEX قمنا بتحويل الـ
 
        Matcher m = p.matcher(INPUT);         // Matcher ثم قمنا بتخزينه في كائن نوعه INPUT على النص matcher() قمنا باستدعاء الدالة
 
        System.out.println( "lookingAt() \n return: " + m.lookingAt() + "\n" );   // INPUT موجود في النص Pattern لأن محتوى الـ true سترجع lookingAt() هنا الدالة
        System.out.println( "find() \n return: "      + m.find()      + "\n" );   // INPUT موجود مرة واحدة فقط في النص Pattern لأن محتوى الـ false سترجع find() هنا الدالة
        System.out.println( "matches() \n return: "   + m.matches()   + "\n" );   // INPUT يساوي كل المحتوى الموجود في النص Pattern لأن محتوى الـ true سترجع matches() هنا الدالة
 
    }
 
}

سنحصل على النتيجة التالية عند التشغيل.

lookingAt()
 return: true

find()
 return: false

matches()
 return: true