المطابقة والالتقاط
match وcaptures
المطابقة والالتقاط درس مجاني في Ruby Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Ruby Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Ruby Academy 4 دروس في المجموع.
كائنات MatchData
عند استدعاء regex.match(string) تعيد Ruby كائنًا من نوع MatchData عند النجاح، أو nil عند الفشل.
يحتوي MatchData على النص المطابق وأي مجموعات ملتقطة.
m = /world/.match('hello world')
puts m.class
puts(m[0])التطابق الكامل: الفهرس 0
يحتوي الفهرس 0 في MatchData دائمًا على السلسلة الفرعية المطابقة بأكملها، بغض النظر عن المجموعات الموجودة.
m = /\d+/.match('order 4521 shipped')
puts(m[0])
puts(m.to_s)مجموعات الالتقاط
تنشئ الأقواس ( ) مجموعات التقاط. ويمكن الوصول إلى كل مجموعة باستخدام رقم يبدأ من 1.
m = /(\d{4})-(\d{2})/.match('2026-05')
puts(m[1])
puts(m[2])الأسلوب captures
يعيد captures مصفوفة تحتوي على جميع مجموعات الالتقاط (باستثناء التطابق الكامل الموجود في الفهرس 0).
m = /(\w+)@(\w+)/.match('alice@example')
p m.capturesتفكيك الالتقاطات
بما أن captures يعيد مصفوفة، يمكنك تفكيك النتيجة مباشرةً إلى متغيرات.
user, host = /(\w+)@(\w+)/.match('bob@server').captures
puts user
puts hostالتطابق السابق واللاحق
يوفر MatchData أساليب مساعدة للنص المحيط بالتطابق:
pre_matchالجزء السابق للتطابقpost_matchالجزء اللاحق للتطابق
m = /\d+/.match('abc123xyz')
puts(m.pre_match)
puts(m.post_match)استخدام scan للعثور على جميع التطابقات
يعيد String#scan مصفوفة تحتوي على كل التطابقات في السلسلة النصية، وليس التطابق الأول فقط.
nums = '12 cats, 8 dogs, 3 birds'.scan(/\d+/)
p numsاستخدام scan مع المجموعات
إذا احتوى نمطك على مجموعات، يعيد scan مصفوفة من المصفوفات، واحدة لكل تطابق، وتحتوي كل منها على الالتقاطات الخاصة بذلك التطابق.
pairs = 'a=1 b=2 c=3'.scan(/(\w)=(\d)/)
p pairsالتعامل الآمن مع nil
تذكر دائمًا أن match يعيد nil عندما لا يحدث أي تطابق. تحقق من ذلك قبل استخدام النتيجة.
m = /(\d+)/.match('no digits here')
if m
puts m[1]
else
puts 'no match found'
endالمتغيرات الخاصة
بعد نجاح المطابقة، تضبط Ruby متغيرات عامة: يحتوي $~ على MatchData، بينما يحتوي $1 و$2 على الالتقاطات المرقمة.
تُعد هذه المتغيرات مفيدة في البرامج النصية السريعة، لكن استخدام MatchData بشكل صريح أوضح في التعليمات البرمجية الفعلية.
if 'name: Alice' =~ /name: (\w+)/
puts $1
endاستخراج تاريخ
اجمع بين المجموعات والالتقاطات لاستخراج بيانات منظمة من سلسلة نصية في خطوة واحدة.
year, month, day = /(\d{4})-(\d{2})-(\d{2})/.match('2026-05-29').captures
puts "Year #{year}, Month #{month}, Day #{day}"اختبار سريع
بالنظر إلى 'a=1 b=2'.scan(/(\w)=(\d)/)، ما شكل النتيجة؟
مراجعة: المطابقة والالتقاط
يمكنك الآن استخراج البيانات من التطابقات:
- يعيد
matchكائن MatchData أو القيمة nil - يحتوي الفهرس 0 على التطابق الكامل، بينما تحتوي الفهارس 1 وما بعدها على المجموعات
- يعيد
capturesجميع المجموعات في مصفوفة - يعثر
scanعلى كل تطابق في السلسلة النصية - تحقق دائمًا من عدم كون القيمة
nil
p 'x1 y2 z3'.scan(/([a-z])(\d)/)الأسئلة الشائعة
هل درس «المطابقة والالتقاط» مجاني؟
نعم — نص درس «المطابقة والالتقاط» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Ruby Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Ruby Academy 4 دروس في المجموع.
ماذا ستتعلم في «المطابقة والالتقاط»؟
match وcaptures تتمرن على Ruby Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Ruby Academy؟
لا تُشترط خبرة سابقة. Ruby Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «المطابقة والالتقاط»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Ruby Academy هذا؟
نعم. كل درس في Ruby Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- ثوابت Regex
- المطابقة والالتقاط
- الاستبدال
- المجموعات المسماة والمراسي