الأخبار التكنولوجية والاستعراضات والنصائح!

مفاهيم متقدمة – نحو الذكاء الاصطناعي

ستساعدك المقالة التالية: مفاهيم متقدمة – نحو الذكاء الاصطناعي

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

التعبيرات العادية (RegEx) في Python: المفاهيم المتقدمة

أضف مهارات متقدمة إلى مجموعة مهارات RegEx

تحفيز

تطلب العديد من مواقع الويب كلمة مرور تتكون من ثمانية أحرف على الأقل ومتطلبات خاصة. ولكن هل تساءلت يومًا كيف تتحقق مواقع الويب من صحة كلمات المرور الخاصة بك وفقًا لهذه المتطلبات؟ الجواب هو Regular Expression أو RegEx. يعد regex مهارة مهمة يجب تعلمها لأي مبرمج وعلماء بيانات للتعامل مع النص (السلاسل). يمكنك أيضًا استخدامه لتنظيف بيانات النص في معالجة اللغة الطبيعية!

في هذه القصة ، سأغطي بعض مهارات regex المتقدمة بالإضافة إلى regex الأساسي ، والذي قدمته في قصتي التالية. أوصي بشدة بتنظيف الأساسيات قبل الخوض في أعماق التعبير العادي المتقدم.

التعبير العادي (RegEx) في Python: الأساسيات

ملخص الحروف الأولية Regex

لقد قدمت الحروف الأولية للكلمات والأرقام والأحرف الفضائية في القصة المذكورة أعلاه والتي تغطي التعبير العادي الأساسي. يقدم الجدول التالي أحرف أولية مهمة أخرى.

1. تطابق أي حرف مع. (فترة)

الفترة . في نموذج regex يمكن استخدامه لمطابقة أي حرف باستثناء حرف سطر جديد \ n. كما هو موضح في الشكل التالي ،. تم استخدامه مع مُحدِّد كمي + لمطابقة أي شيء بعد https: //.

2. حدد موقع البحث باستخدام ^ (علامة الإقحام) و $ (دولار)

في الصورة التالية ، نقوم باستخراج سلاسل من أفلام سبايدرمان. ومع ذلك ، فإنه يعطي نتائج من النص بأكمله. ماذا لو أردنا مطابقة النمط فقط في بداية النص أو في نهايته؟

تحديد ^ قبل أن يبحث النمط عن تطابق محتمل في بداية النص كما هو موضح في الشكل أدناه.

وبالمثل ، فإن تحديد $ في نهاية النموذج سيبحث عن تطابق محتمل في نهاية النص كما هو موضح أدناه.

3. عامل التشغيل | (يضخ)

لنفترض أن لدينا نمطين – A و B ؛ نريد مطابقة أي من الأنماط. يمكن القيام بذلك باستخدام أ | ب. بمعنى آخر ، تعني A | B مطابقة أي شيء من A أو B. ويمكن أيضًا أن يمتد هذا إلى أكثر من نمطين مثل A | B | C | D | E

4. تحديد نطاق الأحرف باستخدام [ ] (أقواس مستطيلة)

لاستخراج حرف كلمة ، يمكننا استخدام \ w. ولكن ماذا لو أردنا مطابقة الأحرف الكبيرة فقط؟ يمكننا تحديد نطاق الأحرف هذا في الداخل [] . على سبيل المثال ، [A-Z] يعني تطابق أي حرف كبير واحد. عن طريق القياس باستخدام علامة الجمع مثل [A-Z]+ ، يمكن مطابقة أكثر من حرف كبير.

بعض الأمثلة على نطاقات الشخصيات
1. [A-Z]:
تطابق أي حرف كبير
2. [A-Za-z]: تطابق أي أحرف كبيرة أو صغيرة
3. [0–9]: تطابق أي رقم
4. [[email protected]#]: تطابق أي حرف من! أو @ أو #

اقرأ المزيد عن نطاق الشخصيات هنا.

5. استخدم ^ (علامة الإقحام) بالداخل [ ] لتحديد نطاق الحرف المعاكس

رأينا استخدام [A-Z] ، يمكن مطابقة أي حرف كبير. ولكن ماذا لو أردنا مطابقة أي شيء سوى الأحرف الكبيرة؟ هنا ، يمكننا استخدام ^ داخل الحرف ، النطاق لتحديد عكس النطاق ، على سبيل المثال [^A-Z] سيطابق أي شيء باستثناء الحرف الكبير.

تحفيز للتجميع

دعنا نستخرج موقع ويب من النص المحدد باستخدام نمط regex. إنه واضح ومباشر كما هو موضح أدناه.

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

1. التجميع باستخدام () (الأقواس)

يمكن تحديد المجموعات باستخدام (). في المثال التالي ، نقوم باستخراج أجزاء من موقع الويب باستخدام التجميع. تبدو مفيدة جدا ، أليس كذلك؟

2. حدد المجموعات غير الملتقطة باستخدام (؟ 🙂

ومع ذلك ، في بعض الأحيان نريد مطابقة مجموعات معينة ولكن لا نريد تضمينها في النتائج. في المثال أدناه ، نريد مطابقة مجموعة (www) ولكن لا نريدها في الإخراج. بإضافة؟: قبل النمط المجمع ، على سبيل المثال (؟: www) ، يمكننا جعله مجموعة غير ملتقطة.

3. الرجوع إلى المجموعات

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

دعونا نرى الرجوع إلى الخلف في العمل. في المثال التالي ، سنعيد استخدام النتيجة من المجموعة الثانية باستخدام \ 2.

4. تأكيدات Lookarounds

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

4.1 نظرة موجبة باستخدام (؟ =)

ضع في اعتبارك أن لديك خمسة اختبارات بنتائجها كما هو موضح في الصورة. تريد فقط استرداد تلك الاختبارات التي تم اجتيازها. بمعنى آخر ، نحن بحاجة إلى النظر مسبقًا إلى Test \ d للتحقق مما إذا كان قد نجح في اجتياز النص ، ثم مطابقة النص Test \ d فقط.

يسمى هذا المظهر الإيجابي لأننا نريد الحصول على المطابقة فقط إذا كان متبوعًا بنمط فرعي معين. من خلال إضافة؟ = قبل النمط الفرعي ، يمكن تحويلها إلى تأكيد نظرة موجبة.

يمكن استخدام lookahead الإيجابي للتحقق مما إذا كانت أي كلمة مرور محتملة تفي بالشروط مثل الحد الأدنى من الأحرف والأحرف الخاصة وما إلى ذلك.

4.2 البحث السلبي باستخدام (؟!)

الآن نريد استرداد تلك الاختبارات التي لم يتبعها النص اجتياز. هذا مثال على lookahead سلبي لأننا لا نريد نمطًا فرعيًا معينًا (تم اجتيازه هنا) يتبعه شيء (هنا Test \ d).

يتضمن بناء lookahead السلبي؟! قبل النمط الفرعي.

4.3 البحث الخلفي الإيجابي باستخدام (؟ <=)

هذا هو الجانب الآخر من النظرة الإيجابية. هنا نريد مطابقة شيء ما فقط إذا كان مسبوقًا بنمط فرعي محدد. في المثال التالي ، نريد فقط استرداد رقم إذا كان يبدأ بالجنيه (£).

يتضمن بناء lookahead الإيجابي؟ <= قبل النمط الفرعي.

4.4 البحث الخلفي السلبي باستخدام (؟

هذا هو عكس النظرة السلبية. هنا نريد مطابقة شيء ما فقط إذا لم يسبقه نمط فرعي محدد. في المثال التالي ، نريد استرداد رقم فقط إذا لم يبدأ بالجنيه (£).

يتضمن بناء lookahead السلبي؟ قبل النمط الفرعي.

ملاحظات ختامية

شكرا لقراءة القصة! آمل أن يكون قد عزز عضلات regex الخاصة بك. اسمحوا لي أن أختم بسؤال تمرين.

سؤال: كيف تتحقق من صحة كلمة المرور بالشروط التالية باستخدام regex؟
الشرط 1 –
يجب أن يحتوي على 8 أحرف على الأقل
الحالة 2—
يجب أن يحتوي على الأقل على حرف كبير واحد وحرف صغير واحد
الشرط 3
يجب أن يحتوي على رقم واحد على الأقل
مثال على كلمة مرور مطابقة للشروط المذكورة أعلاه هو q1w2eR3T.

لا تتردد في مشاركة إجاباتك في التعليقات. تابعوني على ميديوم إذا كنت ترغب في المزيد من القصص مثل هذه.


تم نشر التعبيرات العادية (RegEx) في Python: Advanced Concepts في الأصل في Towards AI on Medium ، حيث يواصل الأشخاص المحادثة من خلال تسليط الضوء على هذه القصة والرد عليها.

تم النشر عبر نحو الذكاء الاصطناعي