ثوابت Regex
أساسيات الأنماط
ثوابت Regex درس مجاني في Ruby Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Ruby Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Ruby Academy 4 دروس في المجموع.
ما التعبير النمطي؟
التعبير النمطي (regex) هو نمط يُستخدم لمطابقة النصوص. في Ruby، يُعد regex كائنًا من الدرجة الأولى من الفئة Regexp.
تستخدم regex من أجل البحث عن أجزاء السلاسل النصية والتحقق من صحتها واستخراجها.
- مطابقة كلمة أو رقم أو رمز
- التحقق من صحة عناوين البريد الإلكتروني وأرقام الهواتف
- استخراج أجزاء من نص غير منظم
pattern = /hello/
puts pattern.class
puts(pattern.match?('hello world'))الثوابت النمطية باستخدام الشرطتين المائلتين
الطريقة الأكثر شيوعًا لكتابة regex في Ruby هي وضعه بين شرطتين مائلتين إلى الأمام: /pattern/.
يُسمى هذا ثابتًا نمطيًا. وكل ما يقع بين الشرطتين المائلتين هو النمط.
ruby = /ruby/
puts ruby.class
puts(ruby.match?('I love ruby'))
puts(ruby.match?('I love python'))عامل المطابقة =~
يختبر العامل =~ سلسلة نصية باستخدام regex. ويعيد فهرس أول تطابق، أو nil في حال عدم وجود تطابق.
puts('hello world' =~ /world/)
puts(('hello world' =~ /xyz/).inspect)استخدام match? للحصول على إجابة منطقية
عندما تحتاج إلى إجابة بنعم أو لا فقط، استخدم match?. فهو يعيد true أو false ويكون أسرع لأنه لا ينشئ كائن MatchData.
puts(/\d/.match?('abc123'))
puts(/\d/.match?('abcdef'))فئات المحارف
تطابق فئة المحارف الموضوعة بين قوسين مربعين أي محرف واحد من مجموعة محددة.
[abc]تطابق a أو b أو c[a-z]تطابق أي حرف إنجليزي صغير[0-9]تطابق أي رقم
puts(/[aeiou]/.match?('sky'))
puts(/[aeiou]/.match?('tree'))
puts(/[0-9]/.match?('room 7'))الفئات المختصرة
توفر Ruby محارف هروب مختصرة لفئات المحارف الشائعة:
\dرقم، و\Dمحرف غير رقمي\wمحرف كلمة (حروف أو أرقام أو شرطة سفلية)\sمسافة بيضاء، و\Sمحرف ليس مسافة بيضاء
puts(/\d\d/.match?('age 42'))
puts(/\w+/.match?('hello_99'))
puts(/\s/.match?('no_space'))النقطة ومحددات التكرار
تطابق النقطة . أي محرف واحد (باستثناء محرف السطر الجديد). وتتحكم محددات التكرار في عدد مرات التكرار:
*صفر مرة أو أكثر+مرة واحدة أو أكثر?صفر مرة أو مرة واحدة{2,4}من مرتين إلى أربع مرات
puts(/ab+c/.match?('abbbc'))
puts(/colou?r/.match?('color'))
puts(/\d{3}/.match?('id 451'))التناوب باستخدام الخط العمودي
يعني الخط العمودي | «أو». يطابق النمط cat|dog أيًا من الكلمتين.
استخدم الأقواس لتجميع التناوب داخل نمط أكبر.
pet = /cat|dog/
puts(pet.match?('I have a dog'))
puts(pet.match?('I have a fish'))
puts(/^(yes|no)$/.match?('yes'))علامة المطابقة غير الحساسة لحالة الأحرف
أضف العلامة i بعد الشرطة المائلة الختامية لجعل المطابقة غير حساسة لحالة الأحرف.
تشمل العلامات المفيدة الأخرى m (تطابق النقطة محرف السطر الجديد) وx (الوضع الموسع، مع تجاهل المسافات البيضاء).
puts(/ruby/i.match?('I love RUBY'))
puts(/ruby/.match?('I love RUBY'))إنشاء regex من السلاسل النصية
يمكنك إنشاء regex وقت التشغيل باستخدام Regexp.new. استخدم Regexp.escape لإدراج إدخال المستخدم بأمان، إذ قد يحتوي على محارف خاصة.
word = 'price'
pattern = Regexp.new(word)
puts(pattern.match?('the price is high'))
puts(Regexp.escape('a.b*c'))مقدمة عن المراسي
تطابق المراسي مواضع النص، لا المحارف:
^بداية السطر$نهاية السطر\Aبداية السلسلة النصية\zنهاية السلسلة النصية
ستدرس هذه المراسي بالتفصيل لاحقًا.
puts(/^Hello/.match?('Hello there'))
puts(/world$/.match?('hello world'))اختبار سريع
ماذا يعيد العامل =~ عندما يطابق regex سلسلة نصية؟
مراجعة: الثوابت النمطية
لقد تعلمت أساسيات regex في Ruby:
- تُكتب الثوابت النمطية بين
/slashes/ - يعيد
=~فهرسًا، بينما يعيدmatch?قيمة true أو false - فئات المحارف
[ ]والاختصارات\d \w \s - محددات التكرار
* + ? {n,m}والتناوب| - تجعل العلامة
iالمطابقة غير حساسة لحالة الأحرف
ستتعلم بعد ذلك كيفية التقاط الأجزاء المطابقة.
puts(/\w+@\w+\.\w+/i.match?('USER@Mail.com'))الأسئلة الشائعة
هل درس «ثوابت Regex» مجاني؟
نعم — نص درس «ثوابت Regex» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Ruby Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Ruby Academy 4 دروس في المجموع.
ماذا ستتعلم في «ثوابت Regex»؟
أساسيات الأنماط تتمرن على Ruby Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Ruby Academy؟
لا تُشترط خبرة سابقة. Ruby Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «ثوابت Regex»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Ruby Academy هذا؟
نعم. كل درس في Ruby Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.