ثوابت Regex ومطابقتها
طابق الأنماط باستخدام النوع Regex.
ثوابت Regex ومطابقتها درس مجاني في Swift Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Swift Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Swift Academy 4 دروس في المجموع.
التعبيرات النمطية في Swift
يوفّر Swift 5.7 والإصدارات الأحدث تعبيرات نمطية أصلية في المكتبة القياسية وFoundation. يمكنك كتابة تعبير نمطي حرفي بين شرطتين مائلتين، مثل /\d+/، ويتحقق المصرّف منه أثناء البناء.
تعبير نمطي حرفي
ينتج التعبير النمطي الحرفي قيمة من نوع Regex. ويلتقط نوعها ما تُرجعه المطابقة. يطابق أبسط الأنماط تسلسلًا ثابتًا من الأحرف.
let pattern = /hello/
if "hello world".contains(pattern) {
print("Found hello")
}wholeMatch(of:)
تنجح wholeMatch(of:) فقط إذا طابق النص بأكمله النمط. وتُرجع مطابقة اختيارية، أو nil إذا لم يطابق النص بأكمله.
let digits = /\d+/
if let m = "12345".wholeMatch(of: digits) {
print("Whole match: \(m.output)")
} else {
print("No whole match")
}firstMatch(of:)
تفحص firstMatch(of:) السلسلة وتُرجع أول موضع يطابق فيه النمط في أي مكان داخلها.
let word = /\w+/
if let m = " swift rocks".firstMatch(of: word) {
print("First word: \(m.output)")
}الوصول إلى نطاق المطابقة
تكشف المطابقة عن range داخل السلسلة الأصلية، ولذلك تعرف موضع حدوثها بدقة.
let text = "abc123def"
if let m = text.firstMatch(of: /\d+/) {
print("Matched: \(m.output)")
print("At: \(text[m.range])")
}فئات الأحرف
داخل النمط، يطابق \d رقمًا، ويطابق \w حرفًا من كلمة، بينما يطابق \s مسافة بيضاء. وتعرّف الأقواس المربعة مجموعة مخصصة مثل [aeiou].
let vowel = /[aeiou]/
if let m = "sky".firstMatch(of: vowel) {
print("Vowel: \(m.output)")
} else {
print("No vowels found")
}محددات التكرار
تتحكم محددات التكرار في عدد مرات التكرار: يطابق * صفرًا أو أكثر، و+ مرة واحدة أو أكثر، و? قيمة اختيارية، بينما يحدد {n,m} عددًا ضمن نطاق.
let phone = /\d{3}-\d{4}/
print("555-1234".wholeMatch(of: phone) != nil)
print("12-34".wholeMatch(of: phone) != nil)المثبتات
استخدم ^ للتثبيت عند بداية السطر و$ عند نهايته. لا تستهلك المثبتات أي أحرف؛ بل تؤكد موضعًا معينًا.
let startsWithCap = /^[A-Z]\w*/
if let m = "Swift".firstMatch(of: startsWithCap) {
print("Matched: \(m.output)")
}المطابقة غير الحساسة لحالة الأحرف
يمكنك تجاهل حالة الأحرف بإضافة .ignoresCase() إلى قيمة Regex، وهذا مفيد عندما لا تكون حالة الأحرف في الإدخال متوقعة.
let pattern = /swift/.ignoresCase()
print("I love SWIFT".contains(pattern))المطابقة باستخدام matches(of:)
تُرجع matches(of:) مجموعةً من كل المطابقات غير المتداخلة في السلسلة، مما يتيح لك التكرار عليها جميعًا.
let nums = "a1 b22 c333"
for m in nums.matches(of: /\d+/) {
print(m.output)
}التحقق من صحة الإدخال
من الاستخدامات الشائعة التحقق من الصحة: أنشئ نمطًا للتنسيق الكامل المتوقع، ثم تحقّق باستخدام wholeMatch التي تُرجع nil عند عدم التطابق.
func isZip(_ s: String) -> Bool {
s.wholeMatch(of: /\d{5}/) != nil
}
print(isZip("90210"))
print(isZip("ABCDE"))تحقق سريع
ما الطريقة التي تنجح فقط عندما تطابق السلسلة بأكملها؟
مراجعة
لقد تعلّمت كتابة التعبيرات النمطية الحرفية باستخدام الشرطات المائلة، وإجراء المطابقة باستخدام wholeMatch(of:) وfirstMatch(of:) وmatches(of:). كما تعرّفت إلى فئات الأحرف ومحددات التكرار والمثبتات والمطابقة غير الحساسة لحالة الأحرف. ستستخرج البيانات من المطابقات باستخدام مجموعات الالتقاط في الخطوة التالية.
تعلم Swift مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 122
- الدروس
- 409
الأسئلة الشائعة
هل درس «ثوابت Regex ومطابقتها» مجاني؟
نعم — نص درس «ثوابت Regex ومطابقتها» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Swift Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Swift Academy 4 دروس في المجموع.
ماذا ستتعلم في «ثوابت Regex ومطابقتها»؟
طابق الأنماط باستخدام النوع Regex. تتمرن على Swift Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Swift Academy؟
لا تُشترط خبرة سابقة. Swift Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «ثوابت Regex ومطابقتها»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Swift Academy هذا؟
نعم. كل درس في Swift Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- ثوابت Regex ومطابقتها
- مجموعات الالتقاط
- RegexBuilder DSL
- استبدال النص وتقسيمه