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
غير موجود في النص.
المثال الأول
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
المثال الثاني
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