Java Regex - ما هي التعبيرات العادية وكيفية استخدامها؟



Java Regex هي واجهة برمجة تطبيقات تُستخدم لتعريف نمط للبحث أو معالجة السلاسل. ستتحدث هذه المقالة أيضًا عن فئات مختلفة من التعبيرات العادية التي توفرها Java.

يعد استخراج البيانات أو التحقق من صحتها جانبًا مهمًا في كل لغة برمجة. يعد استخدام التعبيرات العادية أحد أكثر الطرق شيوعًا للتحقق من صحة البيانات. يستخدم هذهالتعبيرات العادية لوصف نمط من الشخصيات. هذه المقالة على Java Regex سوف يسرد الطرق المختلفة لاستخدام التعبيرات في التسلسل التالي:

هيا بنا نبدأ!





ما هي التعبيرات العادية؟

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

التعبيرات العادية - Java Regex - Edureka



يمكن أن يكون التعبير النمطي أ حرف واحد أو نمط أكثر تعقيدًا. يمكن استخدامه لأي نوع من عمليات البحث عن النص واستبدال النص. يتكون نمط Regex من أحرف بسيطة ، مثل / abc / ، أو مجموعة من الأحرف البسيطة والخاصة ، مثل / أب * ج / أو /example(d+).d*/ .

ما هو Java Regex؟

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

توجد طرق مختلفة لاستخدام Java Regex. فلنتحرك قدما ونلقي نظرة على التعبيرات المختلفة.



فئة المطابق

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

طريقة وصف
مباريات منطقية () يختبر ما إذا كان التعبير النمطي المحدد يطابق النمط
البحث المنطقي () يُستخدم للبحث عن التعبير التالي الذي يطابق النمط
البحث المنطقي (بداية int) يبحث عن التعبير التالي الذي يطابق النمط من رقم البداية المحدد
مجموعة السلاسل () تستخدم لإرجاع اللاحقة المتطابقة
بداية int () تُرجع مؤشر البداية للمطابقة اللاحقة
اعتزم() تُرجع فهرس النهاية للنتائج المتطابقة اللاحقة
int groupCount () تُرجع العدد الإجمالي للنتائج المتطابقة اللاحقة

فئة النمط

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

طريقة وصف
تجميع النمط الثابت (String regex) يقوم بتجميع regex المحدد وإرجاع مثيل النمط
تطابقات التطابقات (إدخال CharSequence) يتم استخدامه لإنشاء المطابق الذي يطابق الإدخال المحدد مع النمط
المطابقات المنطقية الثابتة (String regex ، CharSequence input) يعمل كمزيج من طرق التجميع والمطابقة. يقوم بتجميع التعبير النمطي ومطابقة الإدخال المحدد مع النمط
سلسلة [] انقسام (إدخال CharSequence) يستخدم لتقسيم سلسلة الإدخال المحددة حول مباريات من نمط معين
نمط خطوط() يساعد على إرجاع نمط regex

دعنا الآن نأخذ مثالًا صغيرًا لفهم كيفية كتابة تعبير عادي.

كيفية ضبط java classpath
import java.util.regex. * public class RegexExample {public static void main (String [] args) {Pattern pattern = Pattern.compile ('. xx.') Matcher matcher = pattern.matcher ('AxxB') System.out .println ('String تطابق Regex المحدد - + matcher.matches ())}}

في هذه الحالة ، يستخدم داخليًا Pattern و Matcher فئات regex لإجراء المعالجة ولكن من الواضح ،يقلل من خطوط الكود. تحتوي فئة النمط أيضًا على طريقة مطابقة تأخذ regex وإدخال String كوسيطة وتعيد نتيجة منطقية بعد مطابقتها. لذا فإن الكود يعمل بشكل جيد لمطابقة المدخلات مع تعبير عادي في Java. ومن ثم سيكون الناتج صحيحًا كما هو موضح أدناه.

انتاج:
صحيح

دعونا الآن نرى المزيد من فئات تعبيرات جافا العادية.

فئة أحرف Regex

يمثل الجدول أدناه تركيبة فئة الأحرف المختلفة.

فئة الشخصيةوصف
[abc] أ ، ب ، أو ج (فئة بسيطة)
[^ أبك] أي حرف باستثناء a أو b أو c (نفي)
[a-zA-Z] من a إلى z أو من A إلى Z ، ضمنا (النطاق)
[a-d [m-p]] من a إلى d ، أو من خلال p: [a-dm-p] (union)
[a-z && [def]] د أو ه أو و (تقاطع)
[a-z && [^ bc]] من a إلى z ، باستثناء b و c: [ad-z] (الطرح)
[a-z && [^ m-p]] من a إلى z ، وليس m إلى p: [a-lq-z] (الطرح)

مثال:

import java.util.regex. * public class CharacterExample {public static void main (String args []) {// false (not x or y or z) System.out.println (Pattern.matches ('[xyz]'، 'wbcd')) // true (بين x أو y أو z) System.out.println (Pattern.matches ('[xyz]'، 'x')) // خطأ (x و y يأتيان أكثر من مرة) النظام .out.println (Pattern.matches ('[xyz]'، 'xxyyyyz'))}}

محددات Regex

تحدد المحددات الكمية عدد تكرارات الحرف. يمثل الجدول أدناه محددات كمية مختلفة.

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

مثال:

import java.util.regex. * public class مثال {public static void main (String args []) {System.out.println ('؟ quantifier ....') // (a or y or z تأتي مرة واحدة) System.out.println (Pattern.matches ('[ayz]؟'، 'a')) // الإخراج: صحيح System.out.println (Pattern.matches ('[ayz]؟'، 'aaa')) / / (ay و z يأتيان أكثر من مرة) System.out.println (Pattern.matches ('[ayz]؟'، 'ayyyzz')) // output: false // (يأتي أكثر من مرة) النظام. out.println (Pattern.matches ('[ayz]؟'، 'amnta')) // الإخراج: false // (يجب أن يأتي y أو z مرة واحدة) System.out.println (Pattern.matches ('[ ayz]؟ '،' ay ')) // الإخراج: false System.out.println (' + quantifier .... ') // (a أو y أو z مرة أو أكثر) System.out.println (نمط .matches ('[ayz] +'، 'a')) // output: true // (تأتي أكثر من مرة واحدة) System.out.println (Pattern.matches ('[ayz] +'، 'aaa' )) // outpu: true // (يأتي a أو y أو z أكثر من مرة) System.out.println (Pattern.matches ([amn] + '،' aayyyzz ')) // output: true // (z و t لا يتطابقان مع النمط) System.out.println (Pat tern.matches ('[ayz] +'، 'aammta')) // الإخراج: false System.out.println ('* quantifier ....') // (قد تأتي a أو y أو z صفرًا أو أكثر من المرات ) System.out.println (Pattern.matches ('[ayz] *'، 'ayyyza')) // الإخراج: صحيح}}

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

حروف تعريف Regex

تعمل الأحرف الأولية للتعبير العادي كرموز قصيرة. دعنا نلقي نظرة على الجدول أدناه لفهم الأنواع المختلفة من الأحرف الأولية.

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

مثال:

import java.util.regex. * public class MetacharExample {public static void main (String args []) {// d تعني digit System.out.println ('metacharacters d ....') // (non-digit) System.out.println (Pattern.matches ('d'، 'abc')) // الإخراج: خطأ // (الرقم ويأتي مرة واحدة) System.out.println (Pattern.matches ('d'، '1') ) // Output: true // (رقم ولكن يأتي أكثر من مرة) System.out.println (Pattern.matches ('d'، '4443')) // Output: false // (digit and char) System.out .println (Pattern.matches ('d'، '323abc')) // الإخراج: خطأ // D تعني System.out.println غير الرقمية ('metacharacters D ....') // (non-digit but يأتي أكثر من مرة) System.out.println (Pattern.matches ('D'، 'abc')) // Output: false // Its a Digit System.out.println (Pattern.matches ('D'، '1 ')) // الإخراج: false System.out.println (Pattern.matches (' D '،' 4443 ')) // الإخراج: false // (digit and char) System.out.println (Pattern.matches (' D '،' 323abc ')) // الإخراج: خطأ // (بدون رقم ويأتي مرة واحدة) System.out.println (Pattern.matches (' D '،' m ')) // Output: true System.out .pr intln ('metacharacters D with quantifier ....') // (بدون رقم وقد تأتي 0 أو أكثر) System.out.println (Pattern.matches ('D *'، 'abc')) // الإخراج : صحيح } }

بناءً على الشروط المذكورة أعلاه ، سيعرض الإخراج. هذه هي الطريقة التي يعمل. لذلك ، كان هذا كل شيء عن أنواع مختلفة من Regex. بهذا نصل إلى نهاية هذا المقال. أناآمل أن تكون قد وجدتها مفيدة. إذا كنت ترغب في معرفة المزيد ، يمكنك التحقق من موقعنا كذلك.

تفحص ال من Edureka ، شركة تعليمية موثوقة عبر الإنترنت مع شبكة تضم أكثر من 250.000 متعلم راضٍ منتشرين في جميع أنحاء العالم نحن هنا لمساعدتك في كل خطوة في رحلتك ، لكي تصبح بجانب أسئلة المقابلة في جافا هذه ، توصلنا إلى منهج مصمم للطلاب والمهنيين الذين يريدون أن يصبحوا مطور جافا.

لديك سؤال لنا؟ يرجى ذكر ذلك في قسم التعليقات بمقال 'Java Regex' وسنعاود الاتصال بك في أقرب وقت ممكن.