الدرس 20 من 20

بنية المشروع

التعبيرات النمطية

2 دقيقة للقراءة

التعبيرات النمطية (regex) هي أنماط لمطابقة النص. إنها مفيدة لتحليل استجابات الذكاء الاصطناعي واستخراج البيانات والتحقق من المدخلات.

مطابقة الأنماط الأساسية

import re

text = "تواصل معنا على support@example.com"

# البحث عن نمط
match = re.search(r"@\w+\.\w+", text)
if match:
    print(match.group())  # "@example.com"

# إيجاد جميع المطابقات
emails = re.findall(r"\S+@\S+", text)

الأنماط الشائعة

النمط يُطابق مثال
\d رقم 0-9
\w حرف كلمة a-z, A-Z, 0-9, _
\s مسافة بيضاء مسافة، تاب، سطر جديد
. أي حرف أي شيء ما عدا سطر جديد
+ واحد أو أكثر \d+ يُطابق "123"
* صفر أو أكثر \d* يُطابق "" أو "123"
? صفر أو واحد \d? يُطابق "" أو "5"
[] مجموعة أحرف [aeiou] يُطابق حروف العلة

استخراج البيانات من استجابات الذكاء الاصطناعي

import re

# استخراج كتل الكود من markdown
response = """
إليك الكود:
```python
def hello():
    print("مرحباً!")

"""

code_pattern = r"(\w+)?\n(.*?)" matches = re.findall(code_pattern, response, re.DOTALL) for lang, code in matches: print(f"اللغة: {lang}") print(f"الكود: {code}")


## Search و Match و Findall

```python
import re

text = "الطلب #12345 شُحن في 2024-01-15"

# search: إيجاد أول مطابقة في أي مكان
result = re.search(r"#(\d+)", text)
print(result.group(1))  # "12345"

# match: المطابقة في البداية فقط
result = re.match(r"الطلب", text)  # يعمل
result = re.match(r"شُحن", text)   # None (ليس في البداية)

# findall: إيجاد جميع المطابقات
numbers = re.findall(r"\d+", text)  # ["12345", "2024", "01", "15"]

الاستبدال

import re

# استبدال الأنماط
text = "هاتفي هو 123-456-7890"
masked = re.sub(r"\d", "X", text)
# "هاتفي هو XXX-XXX-XXXX"

# الاستبدال مع المجموعات الملتقطة
text = "التاريخ: 2024-01-15"
formatted = re.sub(r"(\d{4})-(\d{2})-(\d{2})", r"\2/\3/\1", text)
# "التاريخ: 01/15/2024"

أمثلة عملية للذكاء الاصطناعي

import re

# استخراج استدعاءات الأدوات من مخرجات الوكيل
output = "سأستخدم search(query='دروس بايثون') لإيجاد ذلك."
tool_pattern = r"(\w+)\(([^)]+)\)"
match = re.search(tool_pattern, output)
if match:
    tool_name = match.group(1)  # "search"
    args = match.group(2)       # "query='دروس بايثون'"

# تحليل المخرجات المنظمة
response = "الجواب: عاصمة فرنسا هي باريس."
answer_pattern = r"الجواب:\s*(.+)"
match = re.search(answer_pattern, response)
if match:
    answer = match.group(1)  # "عاصمة فرنسا هي باريس."

# التحقق من تنسيق مفتاح API
def is_valid_openai_key(key):
    pattern = r"^sk-[A-Za-z0-9]{48}$"
    return bool(re.match(pattern, key))

مرجع سريع

import re

# العمليات الشائعة
re.search(pattern, text)     # إيجاد أول مطابقة
re.match(pattern, text)      # المطابقة في البداية
re.findall(pattern, text)    # إيجاد جميع المطابقات
re.sub(pattern, repl, text)  # استبدال المطابقات
re.split(pattern, text)      # التقسيم بالنمط

# الأعلام
re.IGNORECASE  # غير حساس لحالة الأحرف
re.DOTALL      # . يُطابق أسطر جديدة
re.MULTILINE   # ^ و $ يُطابقان حدود الأسطر

تهانينا! لقد أكملت دورة بايثون لتطوير الذكاء الاصطناعي. أنت الآن جاهز لبناء وكلاء الذكاء الاصطناعي! :::

اختبار

الوحدة 5: بنية المشروع

خذ الاختبار