دليل كامل لقواعد Regex: ما هي، وكيف تعمل، وأمثلة عملية

  • تسمح لك قواعد Regex بالبحث عن النص والتحقق منه وتحويله بكفاءة.
  • يستخدم بناء الجملة الخاص به الأحرف الحرفية والأحرف الوصفية والكميات لتحديد الأنماط الدقيقة.
  • يعد Regex ضروريًا في البرمجة وإدارة النظام وتحسين محركات البحث وتحرير البيانات المتقدمة.

مثال على قواعد التعبيرات العادية

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

هل تساءلت يومًا عن كيفية العثور على أنماط معقدة داخل المستندات، أو التحقق من صحة النماذج، أو تحويل البيانات، أو أتمتة عمليات البحث في مشاريع تكنولوجيا المعلومات الخاصة بك؟ سواءً كنتَ مطوّرًا أو مسؤول نظام أو مجرد مستخدم فضولي، فهذه المقالة لك. استعد لدليل شامل وعملي، والأهم من ذلك، واضح لقواعد التعبيرات العادية وتطبيقاتها في جميع أنواع السياقات.

ما هي قواعد Regex أو التعبيرات العادية؟

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

الفكرة الأساسية هي وصف، باستخدام سلسلة من الرموز والحروف والمشغلات الخاصة، النمط الذي يجب أن يتوافق معه النص الذي نريد تحديد موقعه أو التحقق من صحته أو تعديله.على سبيل المثال، إذا كنت تريد العثور على جميع الأرقام في عبارة، يمكنك تحديد نمط بسيط يقول "أي حرف رقمي" (مثل \dإذا كنت تريد شيئًا أكثر تقدمًا، فيمكنك إنشاء قواعد معقدة مثل: "كل السلاسل التي تبدأ بـ "نسخ" وتنتهي برقم".

بناء الجملة التعبيرية العادية

تاريخ وتطور Regex

وُلدت التعبيرات العادية في منتصف القرن العشرين، في مجال المنطق الرسمي ونظرية الأتمتة. كان أول استخدام عملي لها في الأنظمة المستندة إلى UNIX، مع أدوات مساعدة مثل ed, البقرى, عطش y AWK. وبعد ذلك، المعيار POSIX توسعت قواعدها النحوية وأدمجتها في العديد من البيئات. لاحقًا، أصبحت اللغة بيرل رفعت Regex إلى مستوى جديد، وأضافت ميزات جديدة ونشرتها في مجتمع المطورين.

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

ما هي قواعد Regex؟

لا تُستخدم قواعد Regex للبحث فقط؛ بل إنها تقوم أيضًا بالتحقق من صحة كميات كبيرة من البيانات واستخراجها وتحويلها وتصفيتها أو تعديلها في ثوانٍ.

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

أساسيات التعابير العادية: المفاهيم الأساسية

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

1. الأحرف الحرفية

يمثل الحرف الحرفي بالضبط الحرف الذي تريد البحث عنه. على سبيل المثال، التعبير منزل سيتم تحديد هذا التسلسل بالضبط، بهذا الترتيب، داخل النص المستهدف.

2. الأحرف الوصفية: قوة التعبيرات العادية

الأحرف المميزة هي رموز خاصة تعمل على توسيع معنى التعبيرات العادية، مما يمنحها التنوع والقوة. وتشمل الأكثر شيوعًا ما يلي:

  • . تمثل النقطة أي حرف باستثناء كسر السطر.
  • [] تحدد الأقواس فئات أو مجموعات من الأحرف المسموح بها.
  • ^ يمكن أن يشير الرمز المحيط إما إلى بداية السطر/الكلمة، أو، إذا كان محصورًا بين قوسين، إلى نفي مجموعة.
  • $ يشير رمز الدولار إلى نهاية السطر أو النص.
  • * تتيح لك علامة النجمة البحث عن "صفر أو أكثر من التكرارات" للعنصر السابق.
  • + تبحث علامة الجمع عن "تكرار واحد أو أكثر".
  • ? يشير إلى أن العنصر السابق اختياري (صفر أو مرة واحدة).
  • () تقوم الأقواس بتجميع أجزاء من تعبير ما لتطبيق الكميات أو استخراج المجموعات الفرعية أو تحديد البدائل.
  • | يمثل الشريط العمودي البديل المنطقي "أو".
  • \ يتجنب الخط المائل العكسي المعنى الخاص للحرف التالي أو يقدم تسلسلات مختصرة (مثل \d, \w, \s).

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

تسمح لك المحددات بتحديد عدد المرات التي يجب تكرار حرف أو فئة أو مجموعة فيها:

  • *: صفر أو أكثر من التكرارات.
  • +:مرة واحدة أو أكثر.
  • ?:مرة واحدة أو لا مرة على الإطلاق (اختياري).
  • {ن}: بالضبط n التكرارات.
  • {ن،}: على الأقل n مرات (لا يوجد حد أقصى).
  • {ن ، م}: انتري n y m التكرارات.

4. فئات الأحرف والاختصارات

تسمح لنا فئات الأحرف بتضييق نطاق ما نريد البحث عنه بشكل أكبر:

  • [az]:أي حرف صغير.
  • [من الألف إلى الياء]:حرف كبير.
  • [0-9]:أي رقم.
  • [اي بي سي]: الحرف أ، ب، أو ج.
  • [^xyz]: أي حرف باستثناء x، i z.
  • \d: رقم عشري (يعادل [0-9]).
  • \D: أي حرف لا كن رقمًا.
  • \w: حرف كلمة (حرف أو رقم أو شرطة سفلية؛ يعادل [a-zA-Z0-9_]).
  • \W: أي حرف غير كلمة.
  • \s: مسافة بيضاء (مسافة، علامة تبويب، فاصل سطر).
  • \S: أي حرف بخلاف المسافة.

5. المراسي: وضع النمط داخل النص

تتيح لك المراسي وضع الأنماط في بداية السطر أو نهايته، أو في بداية/نهاية الكلمات.

  • ^: بداية السطر أو النص.
  • $:نهاية السطر أو النص.
  • \b: حدود الكلمة (البداية أو النهاية).
  • \B: نقطة حدودية غير كلمة (داخلية).

أمثلة عملية لقواعد Regex

دعونا الآن نلقي نظرة على كيفية تطبيق هذه القواعد على السيناريوهات الحقيقية، البسيطة والمتقدمة، حتى تتمكن من وضع ما تعلمته موضع التنفيذ بسرعة.

  • التحقق من صحة رسائل البريد الإلكتروني: ^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,6})+$
  • تحديد أرقام DNI: \b\d{8}[- ]?[trwagmyfpdxbnjzsqvhlcke]?\b
  • اكتشاف عناوين IP v4: ^(?:(?:25[0-5]|2[0-4]\d|1?\d?\d)(?:\.(?!$)|$)){4}$
  • استخراج عناوين URL من علامات HTML:
  • اكتشاف الأسطر المعلقة في Java: //[^\r\n]*[\r\n]

تخصيص المنطق والأنماط المتقدمة

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

المجموعات والجمعيات

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

على سبيل المثال، التعبير ((ما)+ب) سيطابق "mab" أو "mamab"، ولكن ليس "maab". يمكن الرجوع إلى المجموعات لاحقًا باستخدام \1, \2، وما إلى ذلك، مثالية للعثور على أنماط متكررة مماثلة.

البدائل (|): "أو" المنطقية في Regex

الشريط العمودي | يسمح لك بتحديد البدائل: أي من الأنماط المنفصلة بواسطة هذا الرمز ستكون صالحة. على سبيل المثال، (boy|girl) سوف تتطابق مع كلتا الكلمتين.

الهروب من الأحرف الوصفية باستخدام \

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

الكميات الجشعة والكسولة

بشكل افتراضي، تكون مُحددات التعبيرات العادية جشعة: فهي تأخذ أكبر قدر ممكن من النص. إضافة ? يتم تغييره إلى "كسول"، والذي يلتقط الحد الأدنى الضروري.

على سبيل المثال: كلب سوف تجد أطول سلسلة بين "perr" و "o"، بينما كلب سوف يلتقط الحد الأدنى.

التأكيدات والنظرات المحيطة

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

  • نظرة إيجابية للمستقبل: (?=نمط) تأكد من العثور على "النمط" بعد الموضع الحالي.
  • نظرة مستقبلية سلبية: (؟!نمط) تأكد من عدم وجود "النمط" أدناه.
  • نظرة إيجابية/سلبية إلى الخلف: (?<=نمط) y إنهم يفعلون نفس الشيء "إلى الوراء".

التطبيقات العملية لـ Regex في العالم الحقيقي

يتم استخدام Regex في مجموعة واسعة من المجالات والمهام اليومية:

  • التحقق من صحة النموذج: رسائل البريد الإلكتروني، وأرقام الهواتف، والأسماء، وكلمات المرور القوية.
  • معالجة السجلات وتدقيق النظام:البحث عن الأنماط في ملفات السجل، واستخراج الأخطاء والتحذيرات.
  • إدارة محركات البحث (SEO) وعناوين URL:إعادة كتابة عنوان URL في .htaccess، مرشحات المعلمات، وتجزئة البحث.
  • تحرير النصوص بالجملة:تنظيف علامات HTML، وإزالة المسافات المكررة، وتطبيع البيانات في جداول البيانات، وتكييف التعليمات البرمجية القديمة.
  • تطوير الويب وأتمتته: الاختبار الآلي، تكوين قواعد الخادم، تطوير الكاشط.

نكهات ومحركات Regex المختلفة

لا تدعم جميع تنفيذات Regex نفس الإمكانات؛ فهناك "نكهات" مختلفة اعتمادًا على اللغة أو الأداة أو المحرك المستخدم.

  • بوسيكس: بناء جملة بدائي مبني على يونكس. أقل شمولاً من بيرل أو PCRE.
  • بيرل/PCRE: كاملة جدًا، فهي تدعم عمليات البحث والمراجع المتقدمة والمعدلات والبرامج الفرعية.
  • جافا سكريبت: يستخدم على نطاق واسع على الويب، ومتوافق مع معظم المشغلين، ولكن هناك قيود في البحث الخلفي (باستثناء الإصدارات الحديثة).
  • .NET واللغات الأخرى: إنها متوافقة عادةً مع PCRE، ولكن من المستحسن دائمًا الرجوع إلى وثائق اللغة نفسها.

لذلك، عندما تنوي العمل في سياق معين، تحقق من الدعم والقواعد النحوية التي تقبلها Regex في هذه الأداة أو اللغة.

كيفية اختبار أنماط Regex الخاصة بك وبنائها

أفضل طريقة لتعلم Regex هي التدرب على الأمثلة واستخدام أدوات الاختبار المباشرة المتوفرة على الويب.

  • regex101.com: يسمح لك بكتابة الأنماط، والتحقق من النتائج، وعرض التوضيحات وإحصائيات الأداء.
  • regexr.com: : خيارات مساعدة خطوة بخطوة رائعة، ورسومات مرئية، وأمثلة تفاعلية.
  • الشروحات المرئية ومولدات الأكواد: مثالي لفهم الأنماط المعقدة وتوليد التعبيرات من الصفر.
  • الألعاب والممارسات عبر الإنترنت:تعلم من خلال اللعب وحل التحديات الحقيقية لاستيعاب كيفية عمل Regex.

الأخطاء الشائعة والنصائح العملية لإتقان Regex

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

  • الهروب من الأحرف المميزة عند البحث عن قيمته الحرفية. على سبيل المثال، استخدم \. بالنسبة للنقطة، \* بالنسبة للعلامة النجمية، \? للاستجواب.
  • لا تستخدم النقطة (.) والحرف البديل .* بشكل مفرط. إنها مفيدة جدًا، ولكنها قد تؤدي إلى نتائج غير مرغوب فيها إذا لم تحدد نمطك جيدًا.
  • أضف المراسي (^, $) عندما تريد تقييد النمط ببداية أو نهاية السطر وتجنب المباريات الجزئية.
  • استخدم الكميات المحددة عند البحث عن التكرارات الدقيقة، بدلاً من الاعتماد فقط على * أو +.
  • حاول دائمًا استخدام الأمثلة الإيجابية والسلبية. بهذه الطريقة يمكنك اكتشاف ما إذا كان النمط يغطي جميع الحالات الضرورية دون إنتاج نتائج إيجابية خاطئة.
  • فرق تسد: إذا كان لديك نمط معقد للغاية، قم ببنائه على أجزاء ثم قم بدمج الأجزاء في النهاية.
  • لا تتردد في الاطلاع على أوراق الغش والوثائق والمنتديات. لرؤية الأمثلة والحيل اليومية.

دمج Regex في لغات البرمجة والأدوات

تم دمج التعابير العادية (Regex) في أكثر وظائف لغات البرمجة شيوعًا. إليك بعض الأمثلة:

  • جافا سكريبت: طرق اختبار (), إكسيك () من كائن RegExp والطرق مباراة(), بحث(), يحل محل (), ينقسم() من السلسلة.
  • بايثون: وحدة re يوفر وظائف مثل بحث(), مباراة(), جد كل(), الفرعية()، الخ.
  • PHP: وظائف preg_match(), preg_replace(), تقسيم مسبق وغيرها
  • .صافي: فئة رجإكس مع الأساليب المتقدمة ودعم PCRE.

في المحررين مثل VSCode أو Sublime أو Atom أو Notepad++يمكنك أيضًا استخدام التعابير العادية للبحث والاستبدال. وفي أنظمة يونكس، تتوفر أدوات مساعدة مثل البقرى, عطش y AWK دمج محرك Regex الخاص بهم.

Regex في تحسين محركات البحث وإدارة عناوين URL

يعد Regex مكونًا أساسيًا لتحسين عناوين URL وتوجيه الويب وإدارة المعلمات الديناميكية على منصات مثل WordPress وJoomla والتجارة الإلكترونية.

  • .htaccess و mod_rewrite: إنها تسمح لك بتحويل عناوين URL غير الملائمة والمليئة بالمعلمات إلى عناوين سهلة الاستخدام باستخدام قواعد التعبيرات العادية. بهذه الطريقة، www.ejemplo.com/index.php?p=123 يمكن تحويلها إلى www.ejemplo.com/articulo/titulo-amigable، مما يحسن كل من تحسين محركات البحث وتجربة المستخدم.
  • تصفية المعلمات: استخرج المعلمات الموجودة في عنوان URL أو نظفها أو حوّلها لتكييف النتائج مع سياقات بحث مختلفة.

باستخدام قواعد Regex، يمكن لمشرفي المواقع إنشاء أنماط إعادة كتابة تحدد مكونات عنوان URL وتعدلها لتحسين البنية والتحسين والفهم من قبل محركات البحث والمستخدمين.

التعبيرات العادية المتقدمة: التقنيات والموارد

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

  • البرامج الفرعية والمراجع الخلفية: إنها تسمح لك بالعثور على أنماط متكررة، وتناظرات، وتسلسلات، وتحققات محددة للغاية.
  • الشرطية: قم بإجراء عمليات بحث أو تحقق مختلفة بناءً على ما تم التقاطه في المجموعات السابقة.
  • التكرار: تتيح لك بعض المحركات المتقدمة تحديد أنماط تنطبق على نفسها، وهو أمر مفيد للغاية عند معالجة البيانات المنظمة مثل XML أو JSON.
  • المعدلات العالمية: (/g، /i، /m في Perl/JavaScript) تسمح بإجراء عمليات بحث عالمية، أو بحث غير حساس لحالة الأحرف، أو بحث متعدد الأسطر.

الموارد الأساسية لتعلم Regex

إذا كنت تريد توسيع نطاق معرفتك، فستكون هذه الموارد مفيدة:

  • ويكيبيديا: شرح نظري وتقني مفصل.
  • Regular-Expressions.info: مراجع ودروس تعليمية لجميع المستويات.
  • أوراق الغش: ملخصات سريعة لجميع المشغلين والمجموعات والقواعد الأكثر شيوعًا.
  • دروس تفاعلية: التدريب المباشر مع التمارين وردود الفعل الفورية.
  • المجتمعات والمنتديات: تعلم من المستخدمين الآخرين، واطرح الأسئلة، وشارك نصائحك الشخصية.

يقدم تعلم Regex ميزة كبيرة في إدارة النصوص ومعالجتها، مما يسمح بإجراء عمليات بحث وتحقق وتحويلات وأتمتة أكثر كفاءة. مع الاستمرار والممارسة، يصبح كتابة أنماط التعبيرات العادية أسهل وأكثر طبيعية. استفد من الأدوات المتاحة على الإنترنت والتمارين العملية، وابدأ بأمثلة بسيطة، ثم انتقل إلى أنماط أكثر تعقيدًا. بمجرد إتقان مبادئها، ستصبح التعابير النمطية إضافةً طبيعيةً إلى ترسانة تطويرك وإدارة أنظمتك، مما يُسهّل عليك مهامًا ربما بدت معقدة أو مُرهقة في السابق.


أضف كمصدر مفضل