0Pricing
Lua Academy · درس

‏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*$"))
end

gmatch مقارنةً بـ 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 يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

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

  1. صياغة أنماط Lua
  2. الالتقاط وstring.match
  3. ‏string.gmatch لتقسيم الرموز
  4. ‏string.gsub للتحويلات
← العودة إلى Lua Academy