0Pricing
Ruby Academy · درس

المجموعات المسماة والمراسي

Regex متقدمة

المجموعات المسماة والمراسي درس مجاني في Ruby Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Ruby Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Ruby Academy 4 دروس في المجموع.

لماذا نستخدم المجموعات المسماة؟

تصبح الالتقاطات المرقمة مثل m[1] صعبة القراءة عندما يكبر النمط. تمنح المجموعات المسماة كل التقاط تسمية ذات معنى.

الصياغة: (?<name>pattern).

m = /(?<year>\d{4})-(?<month>\d{2})/.match('2026-05')
puts(m[:year])
puts(m[:month])

الوصول إلى الالتقاطات المسماة

يمكنك الوصول إلى الالتقاطات المسماة باستخدام مفتاح من نوع Symbol أو String: m[:name]. ويعيد الأسلوب named_captures جميعها في Hash.

m = /(?<user>\w+)@(?<host>\w+)/.match('alice@mail')
p m.named_captures

المجموعات المسماة مع =~

عندما يظهر ثابت نمطي يحتوي على مجموعات مسماة على يسار =~، تنشئ Ruby تلقائيًا متغيرات محلية لكل اسم.

if /(?<word>\w+)/ =~ 'hello'
  puts word
end

المراسي: البداية والنهاية

تطابق المراسي المواضع بدلًا من المحارف:

  • ^ بداية السطر
  • $ نهاية السطر

وتُعد ضرورية للتحقق من مطابقة الإدخال بالكامل.

puts(/^abc/.match?('abcdef'))
puts(/def$/.match?('abcdef'))
puts(/^abc$/.match?('abcdef'))

مراسا السلسلة النصية \A و\z

يطابق ^ و$ حدود الأسطر، وهذا مهم في السلاسل النصية متعددة الأسطر. أما بالنسبة إلى السلسلة النصية بأكملها، فاستخدم \A (البداية) و\z (النهاية الفعلية).

text = "first\nsecond"
puts(/^second/.match?(text))
puts(/\Asecond/.match?(text))

التحقق من صحة الإدخال الكامل

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

zip = /\A\d{5}\z/
puts(zip.match?('34000'))
puts(zip.match?('34000x'))

حدود الكلمات

يمثل \b حدًا للكلمة: الموضع بين محرف كلمة ومحرف ليس من محارف الكلمات. وهو يطابق الكلمات الكاملة دون استهلاك أي محارف.

puts('cat catalog'.scan(/\bcat\b/).length)
puts('cat catalog'.scan(/cat/).length)

النظر إلى الأمام

يؤكد النظر الإيجابي إلى الأمام (?=...) ما يأتي بعد الموضع دون تضمينه في التطابق. أما النظر السلبي إلى الأمام فهو (?!...).

puts('100 dollars'.match(/\d+(?= dollars)/)[0])
puts('apple pie'.match?(/apple(?! juice)/))

النظر إلى الخلف

يؤكد النظر إلى الخلف (?<=...) ما يسبق التطابق. أما النظر السلبي إلى الخلف فهو (?<!...).

m = '$42'.match(/(?<=\$)\d+/)
puts(m[0])

المجموعات غير الملتقطة

قد تحتاج أحيانًا إلى التجميع من أجل التناوب أو محددات التكرار، لكنك لا تريد إنشاء التقاط. استخدم (?:...) لإنشاء مجموعة غير ملتقطة.

m = /(?:Mr|Ms)\. (\w+)/.match('Ms. Lee')
p m.captures

جمع كل ذلك

يستخدم المدقق الواقعي المراسي والمجموعات المسماة ومحددات التكرار معًا.

re = /\A(?<area>\d{3})-(?<num>\d{4})\z/
m = re.match('555-1234')
puts(m[:area])
puts(m[:num])

اختبار سريع

ما المراسي التي يجب استخدامها لضمان مطابقة السلسلة النصية بأكملها مع تجاهل فواصل الأسطر؟

مراجعة: المجموعات المسماة والمراسي

لقد أتقنت أدوات regex المتقدمة:

  • المجموعات المسماة (?<name>...) وnamed_captures
  • المراسي ^ $ \A \z \b
  • النظر إلى الأمام (?=) / (?!) والنظر إلى الخلف (?<=) / (?<!)
  • المجموعات غير الملتقطة (?:...)
puts(/\A(?<id>\d+)\z/.match('42')[:id])

الأسئلة الشائعة

هل درس «المجموعات المسماة والمراسي» مجاني؟

نعم — نص درس «المجموعات المسماة والمراسي» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Ruby Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Ruby Academy 4 دروس في المجموع.

ماذا ستتعلم في «المجموعات المسماة والمراسي»؟

Regex متقدمة تتمرن على Ruby Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Ruby Academy؟

لا تُشترط خبرة سابقة. Ruby Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «المجموعات المسماة والمراسي»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Ruby Academy هذا؟

نعم. كل درس في Ruby Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. ثوابت Regex
  2. المطابقة والالتقاط
  3. الاستبدال
  4. المجموعات المسماة والمراسي
← العودة إلى Ruby Academy