Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

مقدمة في أنماط النصوص

جزء من قسم Logic & Flow في رحلة Lua على Coddy — الدرس 36 من 54.

عندما استخدمت string.gsub() في الدرس السابق، بحثت عن نص محدد مثل المسافات أو كلمات معينة. ولكن ماذا لو كنت بحاجة إلى العثور على "أي رقم" أو "أي حرف" دون معرفة الحرف الفعلي؟ هنا يأتي دور أنماط النصوص (string patterns).

تعد أنماط السلاسل النصية (String patterns) في Lua وسيلة لوصف نوع النص الذي تبحث عنه، بدلاً من النص الفعلي نفسه. فهي أبسط من التعبيرات النمطية (regular expressions) ولكنها قوية بما يكفي لمعظم مهام معالجة النصوص.

توفر Lua رموزًا خاصة تسمى فئات الأحرف (character classes) التي تطابق فئات معينة من الأحرف. إليك أكثرها شيوعًا:

%d  -- تطابق أي رقم (0-9)
%a  -- تطابق أي حرف (a-z, A-Z)
%s  -- تطابق أي مسافة بيضاء (مسافة، علامة جدولة، سطر جديد)
%w  -- تطابق أي حرف أبجدي رقمي (أحرف وأرقام)
%p  -- تطابق أي علامة ترقيم

إليك كيفية استخدام هذه الأنماط مع string.find() لتحديد موقع أول رقم في سلسلة نصية:

local text = "Room 42 is available"
local position = string.find(text, "%d")
print(position)  -- المخرجات: 6

يمكنك أيضاً استخدام إصدارات الأحرف الكبيرة من هذه الفئات لمطابقة العكس. على سبيل المثال، %D تطابق أي حرف ليس رقماً، و %A تطابق أي حرف ليس حرفاً.

challenge icon

التحدي

سهل

اكتب دالة containsDigit تأخذ text وتعيد ما إذا كان النص يحتوي على رقم واحد على الأقل.

استخدم string.find() مع فئة المحارف %d للتحقق مما إذا كان هناك أي رقم موجود في السلسلة النصية.

المعاملات:

  • text (string): النص المراد فحصه بحثاً عن أرقام

النتيجة المسترجعة: true إذا كان النص يحتوي على رقم واحد على الأقل، و false خلاف ذلك (boolean)

ورقة مرجعية

تصف أنماط السلاسل النصية (String patterns) في Lua نوع النص الذي تبحث عنه، بدلاً من النص الفعلي نفسه.

توفر Lua رموزاً خاصة تسمى فئات الأحرف (character classes) والتي تطابق فئات معينة من الأحرف:

%d  -- matches any digit (0-9)
%a  -- matches any letter (a-z, A-Z)
%s  -- matches any whitespace (space, tab, newline)
%w  -- matches any alphanumeric character (letters and digits)
%p  -- matches any punctuation character

يمكنك استخدام إصدارات الأحرف الكبيرة (Uppercase) لمطابقة العكس. على سبيل المثال، %D تطابق أي حرف ليس رقماً، و %A تطابق أي حرف ليس حرفاً أبجدياً.

استخدام فئات الأحرف مع string.find():

local text = "Room 42 is available"
local position = string.find(text, "%d")
print(position)  -- Output: 6

جرّب بنفسك

function containsDigit(text)
    -- اكتب الكود هنا
end
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Logic & Flow