Programming Basics SQL HTML CSS JavaScript Python C++ Java JavaFX Swing Problem Solving English English Conversations Computer Fundamentals 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()
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() هنا الدالة
}
}
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
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() هنا الدالة
}
}
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
lookingAt() return: true find() return: false matches() return: true