logo

جافا ريجكس

ال جافا ريجكس أو التعبير العادي هو واجهة برمجة التطبيقات تحديد نمط للبحث أو معالجة السلاسل .

يتم استخدامه على نطاق واسع لتحديد القيد على سلاسل مثل التحقق من صحة كلمة المرور والبريد الإلكتروني. بعد تعلم البرنامج التعليمي لـ Java regex، ستتمكن من اختبار تعبيراتك العادية من خلال أداة اختبار Java Regex.

توفر Java Regex API واجهة واحدة و3 فئات java.util.regex طَرد.

حزمة java.util.regex

توفر فئتا Matcher وPattern إمكانية التعبير العادي لـ Java. توفر الحزمة java.util.regex الفئات والواجهات التالية للتعبيرات العادية.

  1. واجهة نتيجة المباراة
  2. فئة المطابق
  3. فئة النمط
  4. فئة PatternSyntaxException
جافا ريجكس API

فئة المطابق

يقوم بتنفيذ نتيجة المباراة واجهه المستخدم. إنها محرك ريجكس والذي يستخدم لإجراء عمليات المطابقة على تسلسل الأحرف.

لا.طريقةوصف
1المطابقات المنطقية ()اختبار ما إذا كان التعبير العادي يطابق النمط.
2البحث المنطقي ()يجد التعبير التالي الذي يطابق النمط.
3البحث المنطقي (بداية int)يبحث عن التعبير التالي الذي يطابق النمط من رقم البداية المحدد.
4مجموعة السلسلة ()إرجاع التسلسل المطابق.
5بداية كثافة العمليات ()إرجاع فهرس البداية للتسلسل اللاحق المطابق.
6ينوي()إرجاع فهرس النهاية للتسلسل اللاحق المطابق.
7عدد العمليات في المجموعة ()إرجاع العدد الإجمالي للتسلسل المطابقة.

فئة النمط

انها نسخة مجمعة من التعبير العادي . يتم استخدامه لتحديد نمط لمحرك regex.

لا.طريقةوصف
1تجميع الأنماط الثابتة (سلسلة regex)يجمع التعبير العادي المحدد ويعيد مثيل النموذج.
2مُطابق المطابق (إدخال CharSequence)يقوم بإنشاء مُطابق يطابق الإدخال المحدد مع النمط.
3المطابقات المنطقية الثابتة (سلسلة regex، إدخال CharSequence)إنه يعمل كمزيج من أساليب الترجمة والمطابقة. يقوم بتجميع التعبير العادي ويطابق الإدخال المحدد مع النمط.
4تقسيم السلسلة [] (إدخال CharSequence)يقسم سلسلة الإدخال المحددة حول تطابقات النمط المحدد.
5نمط خطوط()إرجاع نمط regex.

مثال على تعبيرات جافا العادية

هناك ثلاث طرق لكتابة مثال regex في Java.

 import java.util.regex.*; public class RegexExample1{ public static void main(String args[]){ //1st way Pattern p = Pattern.compile('.s');//. represents single character Matcher m = p.matcher('as'); boolean b = m.matches(); //2nd way boolean b2=Pattern.compile('.s').matcher('as').matches(); //3rd way boolean b3 = Pattern.matches('.s', 'as'); System.out.println(b+' '+b2+' '+b3); }} 
اختبره الآن

انتاج |

 true true true 

تعبير عادي . مثال

ال . (النقطة) تمثل حرفًا واحدًا.

 import java.util.regex.*; class RegexExample2{ public static void main(String args[]){ System.out.println(Pattern.matches('.s', 'as'));//true (2nd char is s) System.out.println(Pattern.matches('.s', 'mk'));//false (2nd char is not s) System.out.println(Pattern.matches('.s', 'mst'));//false (has more than 2 char) System.out.println(Pattern.matches('.s', 'amms'));//false (has more than 2 char) System.out.println(Pattern.matches('..s', 'mas'));//true (3rd char is s) }} 
اختبره الآن

فئات أحرف Regex

لا.فئة الشخصيةوصف
1[اي بي سي]أ، ب، ج (فئة بسيطة)
2[^اي بي سي]أي حرف باستثناء a أو b أو c (النفي)
3[أ-ي-ي]من a إلى z أو من A إلى Z، شاملاً (النطاق)
4[أ-د[م-ع]]من خلال d، أو من m إلى p: [a-dm-p] (اتحاد)
5[أ-ي&&[تعريف]]د، ه، أو و (تقاطع)
6[أ-ي&&[^قبل الميلاد]]من a إلى z، باستثناء b وc: [ad-z] (الطرح)
7[أ-ي&&[^m-p]]من a إلى z، وليس من m إلى p: [a-lq-z](الطرح)

أمثلة على فئات أحرف التعبير العادي

 import java.util.regex.*; class RegexExample3{ public static void main(String args[]){ System.out.println(Pattern.matches('[amn]', 'abcd'));//false (not a or m or n) System.out.println(Pattern.matches('[amn]', 'a'));//true (among a or m or n) System.out.println(Pattern.matches('[amn]', 'ammmna'));//false (m and a comes more than once) }} 
اختبره الآن

محددات الكمية Regex

تحدد محددات الكمية عدد تكرارات الحرف.

التعبير العاديوصف
X يحدث مرة واحدة أو لا يحدث على الإطلاق
X+X يحدث مرة واحدة أو أكثر
×*X يحدث صفر مرة أو أكثر
X {ن}X يحدث n مرات فقط
X {ن،}X يحدث n مرات أو أكثر
س {ص، ض}X يحدث على الأقل y مرات ولكن أقل من z مرات

أمثلة على فئات أحرف التعبير العادي ومحددات الكمية

 import java.util.regex.*; class RegexExample4{ public static void main(String args[]){ System.out.println('? quantifier ....'); System.out.println(Pattern.matches('[amn]?', 'a'));//true (a or m or n comes one time) System.out.println(Pattern.matches('[amn]?', 'aaa'));//false (a comes more than one time) System.out.println(Pattern.matches('[amn]?', 'aammmnn'));//false (a m and n comes more than one time) System.out.println(Pattern.matches('[amn]?', 'aazzta'));//false (a comes more than one time) System.out.println(Pattern.matches('[amn]?', 'am'));//false (a or m or n must come one time) System.out.println('+ quantifier ....'); System.out.println(Pattern.matches('[amn]+', 'a'));//true (a or m or n once or more times) System.out.println(Pattern.matches('[amn]+', 'aaa'));//true (a comes more than one time) System.out.println(Pattern.matches('[amn]+', 'aammmnn'));//true (a or m or n comes more than once) System.out.println(Pattern.matches('[amn]+', 'aazzta'));//false (z and t are not matching pattern) System.out.println('* quantifier ....'); System.out.println(Pattern.matches('[amn]*', 'ammmna'));//true (a or m or n may come zero or more times) }} 
اختبره الآن

الأحرف الأولية Regex

تعمل الأحرف الأولية للتعبير العادي كرموز قصيرة.

التعبير العاديوصف
.أي حرف (قد يتطابق أو لا يتطابق مع المنهي)
دأي أرقام أقل من [0-9]
دأي رقم غير رقمي، اختصار لـ [^0-9]
سأي حرف مسافة بيضاء، اختصار لـ [ x0Bf ]
سأي حرف لا يحتوي على مسافة بيضاء، وهو اختصار لـ [^s]
فيأي حرف كلمة، اختصار لـ [a-zA-Z_0-9]
فيأي حرف غير كلمة، اختصار لـ [^w]
بحد كلمة
بحدود غير كلمة

مثال على الأحرف الأولية للتعبير العادي

 import java.util.regex.*; class RegexExample5{ public static void main(String args[]){ System.out.println('metacharacters d....');\d means digit System.out.println(Pattern.matches('\d', 'abc'));//false (non-digit) System.out.println(Pattern.matches('\d', '1'));//true (digit and comes once) System.out.println(Pattern.matches('\d', '4443'));//false (digit but comes more than once) System.out.println(Pattern.matches('\d', '323abc'));//false (digit and char) System.out.println('metacharacters D....');\D means non-digit System.out.println(Pattern.matches('\D', 'abc'));//false (non-digit but comes more than once) System.out.println(Pattern.matches('\D', '1'));//false (digit) System.out.println(Pattern.matches('\D', '4443'));//false (digit) System.out.println(Pattern.matches('\D', '323abc'));//false (digit and char) System.out.println(Pattern.matches('\D', 'm'));//true (non-digit and comes once) System.out.println('metacharacters D with quantifier....'); System.out.println(Pattern.matches('\D*', 'mak'));//true (non-digit and may come 0 or more times) }} 
اختبره الآن

سؤال التعبير العادي 1

 /*Create a regular expression that accepts alphanumeric characters only. Its length must be six characters long only.*/ import java.util.regex.*; class RegexExample6{ public static void main(String args[]){ System.out.println(Pattern.matches('[a-zA-Z0-9]{6}', 'arun32'));//true System.out.println(Pattern.matches('[a-zA-Z0-9]{6}', 'kkvarun32'));//false (more than 6 char) System.out.println(Pattern.matches('[a-zA-Z0-9]{6}', 'JA2Uk2'));//true System.out.println(Pattern.matches('[a-zA-Z0-9]{6}', 'arun$2'));//false ($ is not matched) }} 

اختبره الآن

سؤال التعبير العادي 2

 /*Create a regular expression that accepts 10 digit numeric characters starting with 7, 8 or 9 only.*/ import java.util.regex.*; class RegexExample7{ public static void main(String args[]){ System.out.println('by character classes and quantifiers ...'); System.out.println(Pattern.matches('[789]{1}[0-9]{9}', '9953038949'));//true System.out.println(Pattern.matches('[789][0-9]{9}', '9953038949'));//true System.out.println(Pattern.matches('[789][0-9]{9}', '99530389490'));//false (11 characters) System.out.println(Pattern.matches('[789][0-9]{9}', '6953038949'));//false (starts from 6) System.out.println(Pattern.matches('[789][0-9]{9}', '8853038949'));//true System.out.println('by metacharacters ...'); System.out.println(Pattern.matches('[789]{1}\d{9}', '8853038949'));//true System.out.println(Pattern.matches('[789]{1}\d{9}', '3853038949'));//false (starts from 3) }} 
اختبره الآن

مثال جافا ريجكس مكتشف

 import java.util.regex.Pattern; import java.util.Scanner; import java.util.regex.Matcher; public class RegexExample8{ public static void main(String[] args){ Scanner sc=new Scanner(System.in); while (true) { System.out.println('Enter regex pattern:'); Pattern pattern = Pattern.compile(sc.nextLine()); System.out.println('Enter text:'); Matcher matcher = pattern.matcher(sc.nextLine()); boolean found = false; while (matcher.find()) { System.out.println('I found the text '+matcher.group()+' starting at index '+ matcher.start()+' and ending at index '+matcher.end()); found = true; } if(!found){ System.out.println('No match found.'); } } } } 

انتاج:

 Enter regex pattern: java Enter text: this is java, do you know java I found the text java starting at index 8 and ending at index 12 I found the text java starting at index 26 and ending at index 30