string.gmatch لتقسيم الرموز
كرّر عبر جميع التطابقات في سلسلة نصية باستخدام string.gmatch
string.gmatch لتقسيم الرموز درس مجاني في Lua Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Lua Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Lua Academy 4 دروس في المجموع.
ما هو string.gmatch؟
تعيد string.gmatch(s, pattern) مكرّرًا يعيد تباعًا جميع تطابقات pattern في السلسلة النصية s.
التكرار على الكلمات
قسّموا السلسلة النصية إلى كلمات عبر مطابقة تسلسلات المحارف غير الفارغة.
local s = "the quick brown fox"
for word in s:gmatch("%S+") do
print(word)
endجمع التطابقات في جدول
اجمعوا جميع التطابقات في جدول لمعالجتها لاحقًا.
local function split(s, pat)
local parts = {}
for token in s:gmatch(pat) do
parts[#parts+1] = token
end
return parts
end
local words = split("one two three", "%S+")
print(#words) -- 3استخراج الأرقام
استخرجوا جميع الأعداد الصحيحة من سلسلة نصية باستخدام نمط %d+.
local s = "x=10, y=20, z=30"
for n in s:gmatch("%d+") do
print(tonumber(n))
endاستخدام الالتقاطات في gmatch
عندما يحتوي النمط على التقاطات، تعيد كل عملية تكرار المجموعات الملتقطة بدلًا من التطابق الكامل.
local s = "from=Alice, to=Bob, cc=Carol"
for k, v in s:gmatch("(%w+)=(%w+)") do
print(k, "->", v)
endمُحلِّل CSV
قسّموا سطر CSV عبر التقاط كل ما يقع بين الفواصل.
local csv = "apple,banana,cherry,date"
for field in (csv .. ","):gmatch("([^,]*),") do
print(field)
endتحليل أزواج المفتاح والقيمة
حلّلوا سلسلة نصية لرأس بتنسيق HTTP إلى جدول من أزواج المفتاح والقيمة.
local headers = "Content-Type: text/html; Content-Length: 1234"
local parsed = {}
for k, v in headers:gmatch("([%w%-]+): ([^;]+)") do
parsed[k] = v:match("^%s*(.-)%s*$")
endعدّ مرات ظهور النمط
احسبوا عدد مرات ظهور نمط في سلسلة نصية.
local function count(s, pat)
local n = 0
for _ in s:gmatch(pat) do n = n + 1 end
return n
end
print(count("banana", "an")) -- 2مُحلِّل الجمل
قسّموا النص إلى جمل عبر المطابقة حتى علامات الترقيم.
local text = "Hello. How are you? Fine!"
for sent in text:gmatch("[^.!?]+[.!?]?") do
print(sent:match("^%s*(.-)%s*$"))
endgmatch مقارنةً بـ string.find في حلقة
يُعدّ gmatch الطريقة المفضّلة للتكرار على جميع التطابقات. أما استخدام string.find في حلقة while فهو أكثر إسهابًا وأكثر عرضةً للأخطاء.
ملاحظة حول Unicode
تعمل أنماط Lua على مستوى البايتات. وقد لا تتطابق محارف UTF-8 متعددة البايتات بصورة صحيحة مع الأنماط ذات المحرف الواحد. للحصول على دعم كامل لـ Unicode، استخدموا مكتبة UTF-8.
سؤال حول gmatch
على ماذا يكرّر for w in s:gmatch("%S+") do؟
مراجعة: string.gmatch
يُعدّ string.gmatch أداة تقسيم السلاسل النصية القياسية في Lua. استخدموه لتقسيم السلاسل، واستخراج جميع الأرقام، وتحليل أزواج المفتاح والقيمة، وعدّ مرات ظهور الأنماط ضمن حلقة تكرار واضحة.
الأسئلة الشائعة
هل درس «string.gmatch لتقسيم الرموز» مجاني؟
نعم — نص درس «string.gmatch لتقسيم الرموز» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Lua Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Lua Academy 4 دروس في المجموع.
ماذا ستتعلم في «string.gmatch لتقسيم الرموز»؟
كرّر عبر جميع التطابقات في سلسلة نصية باستخدام string.gmatch تتمرن على Lua Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Lua Academy؟
لا تُشترط خبرة سابقة. Lua Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «string.gmatch لتقسيم الرموز»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Lua Academy هذا؟
نعم. كل درس في Lua Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- صياغة أنماط Lua
- الالتقاط وstring.match
- string.gmatch لتقسيم الرموز
- string.gsub للتحويلات