0Pricing
Lua Academy · درس

صياغة أنماط Lua

تعلّم فئات المحارف %d و%a و%s والمراسي ومحددات التكرار في أنماط Lua

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

أنماط Lua مقابل Regex

تستخدم Lua لغة أنماط خاصة بها، وليست تعبيرات Regex كاملة وفق POSIX. وهي أبسط وأسرع، لكنها تفتقر إلى التناوب (|) ونظرات المستقبل.

فئات المحارف

%d رقم، و%a حرف، و%l حرف صغير، و%u حرف كبير، و%s مسافة بيضاء، و%p علامة ترقيم، و%w محرف أبجدي رقمي. ويعكس الحرف الكبير المعنى: %D = ليس رقمًا.

المُحدِّدات

* صفر أو أكثر (جشع)، + واحد أو أكثر، ? صفر أو واحد، - صفر أو أكثر (كسول/أقصر تطابق).

local s = "hello world"
print(s:match("%a+"))   -- hello (first word)
print(s:match(".-o"))   -- hell (lazy stops early)

المراسي

يثبّت ^ التطابق عند بداية السلسلة النصية، ويثبّته $ عند نهايتها.

print(("hello"):match("^h"))     -- h
print(("hello"):match("o$"))     -- o
print(("hello"):match("^world")) -- nil

مجموعات المحارف باستخدام []

فئات محارف مخصّصة: يطابق [aeiou] أي حرف علّة، ويطابق [^aeiou] أي محرف ليس حرف علّة، وتطابق [a-z] الأحرف اللاتينية الصغيرة.

local s = "Hello World 123"
print(s:match("[A-Z]"))     -- H
print(s:match("[0-9]+"))    -- 123

تهريب المحارف السحرية

يجب تهريب المحارف السحرية ( ) . % + - * ? [ ^ $ باستخدام %.

local s = "price: 3.14"
print(s:match("%d+%.%d+"))  -- 3.14 (. escaped to match literal dot)

الرمز البديل .

يطابق . أي محرف واحد. ويمكن دمجه مع المُحدِّدات: إذ يمثّل .- التطابق الكسول مع كل شيء.

print(("abc123"):match("(.-)%d"))  -- abc (lazy, stops at first digit)

نمط الحدّ %f

يطابق %f[set] موضعًا فارغًا بين محرف غير موجود في set ومحرف موجود فيه — وهو مفيد لحدود الكلمات.

local s = "hello world foo"
for w in s:gmatch("%f[%a]%a+") do
  print(w)  -- hello, world, foo
end

string.find مقارنةً بـ string.match

تعيد string.find مؤشري البداية والنهاية (بالإضافة إلى الالتقاطات). أما string.match فتعيد النص المتطابق (أو الالتقاطات) مباشرةً.

local s = "date: 2025-01-15"
local i, j = s:find("%d%d%d%d%-%d%d%-%d%d")
print(i, j)           -- 7  16
print(s:match("(%d+)-(%d+)-(%d+)"))  -- 2025  01  15

التطابق المتوازن %b

يطابق %bxy زوجًا متوازنًا من المحرفين x وy. فمثلًا يطابق %b() الأقواس المتوازنة، بما فيها الأقواس المتداخلة.

local s = "func(a, (b+c), d)"
print(s:match("%b()"))  -- (a, (b+c), d)

قيود الأنماط

لا تدعم أنماط Lua: التناوب (a|b)، أو المراجع الخلفية، أو الاستباق/الاسترجاع، أو المجموعات المسمّاة. استخدموا LPEG أو مكتبة regex خارجية لهذه الحالات.

سؤال حول صياغة الأنماط

أي نمط يطابق رقمًا واحدًا أو أكثر؟

مراجعة: صياغة أنماط Lua

تستخدم أنماط Lua فئات %d %a %s، والمُحدِّدات * + ? -، والمراسي ^ $، والمجموعات []، و%b للتطابق المتوازن. وهي فعّالة، لكنها تفتقر إلى التناوب الموجود في regex.

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

هل درس «صياغة أنماط Lua» مجاني؟

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

ماذا ستتعلم في «صياغة أنماط Lua»؟

تعلّم فئات المحارف %d و%a و%s والمراسي ومحددات التكرار في أنماط Lua تتمرن على Lua Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

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

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

كم من الوقت يستغرق درس «صياغة أنماط Lua»؟

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

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

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

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

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