ال جافا ريجكس أو التعبير العادي هو واجهة برمجة التطبيقات تحديد نمط للبحث أو معالجة السلاسل .
يتم استخدامه على نطاق واسع لتحديد القيد على سلاسل مثل التحقق من صحة كلمة المرور والبريد الإلكتروني. بعد تعلم البرنامج التعليمي لـ Java regex، ستتمكن من اختبار تعبيراتك العادية من خلال أداة اختبار Java Regex.
توفر Java Regex API واجهة واحدة و3 فئات java.util.regex طَرد.
حزمة java.util.regex
توفر فئتا Matcher وPattern إمكانية التعبير العادي لـ Java. توفر الحزمة java.util.regex الفئات والواجهات التالية للتعبيرات العادية.
- واجهة نتيجة المباراة
- فئة المطابق
- فئة النمط
- فئة PatternSyntaxException
فئة المطابق
يقوم بتنفيذ نتيجة المباراة واجهه المستخدم. إنها محرك ريجكس والذي يستخدم لإجراء عمليات المطابقة على تسلسل الأحرف.
لا. | طريقة | وصف |
---|---|---|
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 {ن} | 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