الالتقاط وstring.match
استخرج المجموعات الملتقطة من السلاسل النصية باستخدام string.match وعمليات الالتقاط ()
الالتقاط وstring.match درس مجاني في Lua Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Lua Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Lua Academy 4 دروس في المجموع.
ما هي الالتقاطات؟
الالتقاطات هي أنماط فرعية محاطة بأقواس في أنماط Lua، وتستخرج سلاسل فرعية من النص المتطابق.
استخدام string.match مع الالتقاطات
عندما يحتوي النمط على التقاطات، تعيد string.match السلاسل الفرعية الملتقطة بدلًا من التطابق الكامل.
local date = "2025-01-15"
local y, m, d = date:match("(%d+)-(%d+)-(%d+)")
print(y, m, d) -- 2025 01 15التقاط واحد
يعيد الالتقاط الواحد قيمة نصية واحدة.
local s = "name: Alice"
local name = s:match("name: (%a+)")
print(name) -- Aliceالتقاطات المتعددة
تُعاد الالتقاطات المتعددة كقيم متعددة.
local pair = "key = value"
local k, v = pair:match("(%w+)%s*=%s*(%w+)")
print(k, v) -- key valueالالتقاطات الموضعية ()
يلتقط الالتقاط الفارغ () موضع السلسلة النصية الحالي كرقم.
local s = "hello world"
local pos = s:match("()world")
print(pos) -- 7 (position where world starts)الالتقاطات الاختيارية
لالتقاط جزء اختياري، استخدموا ? بعد المجموعة الملتقطة.
local s = "http://example.com"
local protocol, host = s:match("(https?)://([^/]+)")
print(protocol, host) -- http example.comاستخدام string.find مع الالتقاطات
تعيد string.find مع الالتقاطات موضع البداية، ثم النهاية، ثم السلاسل الفرعية الملتقطة.
local s = "phone: 555-1234"
local i, j, num = s:find("phone: (%d+-%d+)")
print(i, j, num) -- 1 16 555-1234الالتقاطات المتداخلة
يمكن أن تكون الالتقاطات متداخلة، ويُرقّم ترتيبها من اليسار إلى اليمين حسب قوس الفتح.
local s = "2025-01-15"
local full, year = s:match("((%d%d%d%d)-%d%d-%d%d)")
print(full, year) -- 2025-01-15 2025أفضل ممارسات الالتقاطات
استخدموا متغيرات وفق تسمية واضحة. لا تفرطوا في تداخل الالتقاطات. تعيد حالات فشل التطابق القيمة nil، لذا تحقّقوا منها دائمًا قبل استخدام الالتقاطات.
local result = s:match("(%d+)")
if result then print("found:", result)
else print("no match") endمطابقة عناوين البريد الإلكتروني
نمط بسيط للبريد الإلكتروني (غير متوافق مع RFC) مع استخدام الالتقاطات.
local email = "user@example.com"
local user, domain = email:match("([^@]+)@(.+)")
print(user, domain) -- user example.comجدول جميع التطابقات
لجمع جميع التطابقات في جدول، استخدموا string.gmatch (وسيُشرح في الدرس التالي).
سؤال حول الالتقاطات
ماذا يعيد "2025-01-15":match("(%d+)-(%d+)-(%d+)")؟
مراجعة: الالتقاطات و string.match
تستخدم الالتقاطات () في الأنماط لاستخراج السلاسل الفرعية. وتعيد string.match القيم الملتقطة مباشرةً. أما () الفارغة فتلتقط المواضع. تحقّقوا دائمًا من أن نتيجة التطابق ليست nil.
الأسئلة الشائعة
هل درس «الالتقاط وstring.match» مجاني؟
نعم — نص درس «الالتقاط وstring.match» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Lua Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Lua Academy 4 دروس في المجموع.
ماذا ستتعلم في «الالتقاط وstring.match»؟
استخرج المجموعات الملتقطة من السلاسل النصية باستخدام string.match وعمليات الالتقاط () تتمرن على Lua Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Lua Academy؟
لا تُشترط خبرة سابقة. Lua Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «الالتقاط وstring.match»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Lua Academy هذا؟
نعم. كل درس في Lua Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- صياغة أنماط Lua
- الالتقاط وstring.match
- string.gmatch لتقسيم الرموز
- string.gsub للتحويلات