الصفحة الرئيسية » الترميز » دليل المبتدئين للتعبير المنتظم (Regex)

    دليل المبتدئين للتعبير المنتظم (Regex)

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

    لقد رأيت عددًا قليلًا من الناس يلقون نظرة أولى على regex ، ويتجاهلونها تمامًا. أنا لا ألومهم. بناء جملة regex معقد وسيجعل العديد من الكلمات المتشابهة مثل لغات سطر الأوامر ، أسوأ فقط. لكن كل شيء جديد أمر مخيف ويبدو أنه من المستحيل تعلمه في البداية. إذاً ، استعارة كلمات حوراتوس سأقول هذا ؛ ابدأ ، وكن جريئًا ، واجاز الحكمة.

    حول ريجكس

    تعود جذور Regex إلى علم الأعصاب والرياضيات ، وقد تم تنفيذها فقط في البرمجة عام 1968 بواسطة Ken Thompson في محرر نصوص QED للبحث عن النص. الآن جزء من العديد من لغات البرمجة مثل Perl و Java و Python و Ruby و JavaScript.

    دعونا نلقي نظرة على بعض الأمثلة على كيفية عمل regex.

    سأستخدم JavaScript في الأمثلة الخاصة بي. الآن ، لتمرير مستوى المبتدئين ، تحتاج إلى تعلم كل الشخصيات ، والطبقات ، الكمي ، المعدلات والأساليب المستخدمة في ريكس. إليك رابطًا إلى صفحة التعبير العادي لشبكة Mozilla Developer حيث يمكنك عرض جدول يحتوي على كل هذه العناصر. يمكنك أيضًا الرجوع إلى cheatsheet في نهاية هذا المنشور مع أكثر الشخصيات استخدامًا.

    دعنا نرى مثال بسيط مع شرح. هذا هو ريكس.

    هذا ما سيبحث عنه regex أعلاه في سطر ، حرف "B" متبوعًا بحرف واحد على الأقل بين (و بما في ذلك) "a" إلى "z" ، "a" إلى "z" والأرقام من 0 إلى 9.

    إليك عينة من التطابقات في سطر تم تمييزه:

    سلة, مصباح, B12 فيتامين, BaSO4, N قبل الميلاد شركة

    سوف regex أعلاه إيقاف البحث في سلة والعودة استجابة إيجابية. ذلك بسبب المعدل العالمي "زيجب أن تكون محددة إذا كنت تريد أن تعيد regex النظر في جميع التطابقات الممكنة.

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

     var input = "سلسلة الاختبار" ، regex = / B [a-zA-Z \ d] + /؛ إذا (! regex.test (إدخال)) في حالة تأهب ('لم يتم العثور على تطابق') ؛ تنبيه آخر ('تم العثور على تطابق') ؛

    لنجرب طريقة أخرى: مباراة إرجاع المطابقات الموجودة في صفيف.

     var input = "سلسلة الاختبار" ، regex = / B [a-zA-Z \ d] + / g ، / * لقد أضفت المعدل العام 'g' إلى regex للحصول على جميع التطابقات * / ary = input.match (رجإكس)؛ إذا (ary === null) في حالة تأهب ('لم يتم العثور على تطابق') ؛ تنبيه آخر ('التطابقات هي:' + ary.toString ()) ؛

    ماذا عن السلسلة يحل محل? دعونا نجرب ذلك مع regex الآن.

     var input = "سلسلة الاختبار" ، regex = / B [a-zA-Z \ d] + / g؛ alert (input.replace (regex، "#"))؛

    أدناه هو codepen بالنسبة لك لقرص. انقر فوق علامة التبويب "JavaScript" لعرض رمز JS.

    تمارين

    للتمارين ، يمكنك جوجل “تمارين ريجكس” وحاول حلها. إليك ما يمكن توقعه عند محاولة هذه التمارين ، وفقًا لمستويات الصعوبة.

    الأساسية

    بالنسبة لي القدرة على التحقق من صحة كلمة المرور يكفي بالنسبة للمبتدئين. لذا ، تحقق من صحة كلمة المرور لمدة 8 إلى 16 حرفًا ، أبجديًا رقميًا مع اختيار الأحرف الخاصة المسموح بها.

    متوسط

    هذا هو المكان الذي يجب أن تتدرب فيه مع المزيد من بيانات العالم الحقيقي وتعلم المزيد من نقاط regex lookahead ، lookbehind التأكيدات و مجموعات مطابقة.

    • التحقق من صحة رموز PIN ، والسداسية ، والتواريخ ، ومعرف البريد الإلكتروني ، والنقطة العائمة.
    • استبدال الزائدة صفر ، المسافات البيضاء ، مجموعة من الكلمات المطابقة
    • استخراج أجزاء مختلفة من URL

    المتقدمة

    يمكنك تحسين حلول التدريبات المذكورة أعلاه - حيث إن أكثر السجلات المثلى للبريد الإلكتروني يحتوي على آلاف الشخصيات فيها خذها بقدر ما تشعر بالراحة وهذا يكفي. يمكنك أيضًا تجربة:

    • تحليل HTML أو XML (على الرغم من أنه في العالم الواقعي ، فإنه لا يشجع على القيام بذلك لأن استخدام تعبير عادي لتحليل لغة غير عادية مثل HTML لن يجعلها مضمونة أبدًا. بالإضافة إلى أن تحليل XML يعد مهمة صعبة وأكثر ملاءمة للمستخدمين ذوي المستوى المتقدم)
    • استبدال العلامات
    • إزالة التعليقات (باستثناء التعليقات الشرطية لـ IE)

    أدوات

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

    • Debuggex - يرسم رسم تخطيطي regex حسب الإدخال الخاص بك ويمكنك إجراء مشاركة سريعة إلى StackOverflow من هناك مباشرةً.
    • RegExr - يمكنك اختبار regex الخاص بك مع هذا واحد. كما حصلت على مرجع ، cheatsheet وأمثلة لمساعدتك.
    • Refiddle - في الوقت الحالي ، بخلاف JavaScript ، يمكنك أيضًا تخطي إصدارات Ruby و .NET من regex.

    ريجكس Cheatsheet

    رمز فريف
    [حروف] أي حرف واحد أ ، ب أو ج
    [^ اي بي سي] أي شخصية بخلاف a أو b أو c
    [أ-ي] الحرف بين (بما في ذلك) من الألف إلى الياء
    [^ أ-ي] حرف ما عدا من الألف إلى الياء
    [A-Z] الحرف بين (بما في ذلك) من أ إلى ي
    . أي شخصية واحدة
    \ ق أي شخصية بيضاء
    \ S أي شخصية غير بيضاء
    أي رقم من 0 إلى 9
    أي غير أرقام
    \ ث أي حرف كلمة (حرف ، رقم وتسطير أسفل السطر)
    \ W أي شخصية غير كلمة
    (...) التقاط كل شيء المغلقة
    (أ | ب) تطابق إما أو ب
    ا? الحرف (أ) إما غائب أو حاضر مرة واحدة
    ا* الحرف (أ) إما غائب أو الحاضر أكثر من مرة
    ا+ الحرف أ موجود مرة واحدة أو أكثر
    و3 3 حالات شخصية متتالية
    و3 3 أو أكثر من حوادث شخصية على التوالي
    و3،6 3 إلى 6 أحداث شخصية على التوالي
    ^ بداية السلسلة
    $ نهاية السلسلة
    حد كلمة. إذا كان الحرف هو الحرف الأخير أو الأول للكلمة أو إذا كان الحرف بين كلمة أو حرف غير كلمة
    غير كلمة الحدود

    اقرأ الآن: التعبيرات العادية: 30 أدوات وموارد مفيدة