2. التعبيرات النمطية Regular Expressions
كثيراق ً ةما نحتاج لتحديد نمط النص الذي يمكننا قبوله. ةمثلق ً قد
يكون لدينا آلة ل تقبل نص التاريخ ةما لم يكن وفق الشكل
التالي: . yyyy/MM/ddةمثال آخر، آلة ل تقبل سوى
الرقام التي على النمط 10*+ 01* )اضرب أةمثلة على هذه
الرقام(
3. التعبيرات النمطية Regular Expressions
هذا النمط الذي يجب أن تتبعه المتسلسلت أوالنصوص يسمى تعبير منتظم
أو تعبير نمطي ) Regular Expressionأحياناق ً تكتب (regexp
ةمثال: افرض تعبير نمطي لطريقة كتابة أسماء المناطق كالتالي
][A-Z][a-z]*[ ][A-Z][A-Z
وفق هذا النمط فإن النص Gaza PSةمقبول
بينما gaza stripليس ةمقبولق ً
ةمثال: التعبير النمطي للتاريخ 51/01/2102 هو كالتالي
)]10[3|]9-0[]21[|]9-1[0(2)]210[1|]9-1[0()]./ -[((19|20)dd
4. اللغات والتعبيرات النمطية
اللغات الصورية formal languagesالتي تتبع تعبيرات
نمطية محددة يطلق عليها اسم لغات نمطية Regular
Languages
5. العمليات على اللغات
افرض أن لدينا اللغتين Lو M
L U Mيف تالسلستملا لك ةعومجم وهو مجموعة كل المتسلسلت في Lأو Mهنأ ظحالظحظ أنه .
.ينجم عن يف تالسلستملا لك ةعومجم وهذا اهنأ ظحالتحاد بين لغتين إنتاج لغة ثالثة
M ∩ Lيف تالسلستملا لك ةعومجم وهو مجموعة كل المتسلسلت التي تنتمي لكل اللغتين
LMيف تالسلستملا لك ةعومجم وهو مجموعة كل المتسلسلت التي على شكل xyبحيث أن
x∈Lوy∈M
…L* = Ui≥0 Li = L0 U L1 U L2 U
أي أن نجمة كلييني للغة Lتعطي كل المتسلسلت المكونة من
إلحاق صفر أو أكثر من متسلسلت اللغة .L
6. اللغات والتعبيرات النمطية
بفرض أن لدينا التعبيرات النمطية 1 wو 2 wفإن اللغات £
الممكن إنشاؤيف تالسلستملا لك ةعومجم وها وفق التعبيرات النمطية ستكون لها
الخصائص التالية:
£)∅( = ∅,
∑(£∋ a) = {a} for all a
(£,{λ) = {λ
(£2)w1 ∨ w2) = £(w1) ∪ £(w
(£2,)w1w2) = £(w1) ◦ £(w
(£1,)*w1* ) = £(w
7. مثال على استخدام التعبيرات النمطية والعمليات على اللغات
افرض اللغة Lبحيث:
} هو متسلسلة ثنائية ل تضم صفرين متعاقبين أو واحدين متعاقبين L = { w | w
w = 10010 is not in Lبينما ,ً w = 01010101 ∈ Lمثل
المطلوب: ابني تعبيراً نمطياً للغة L
الحل: لحظ أن لدينا أربع حال ت محتملة للعنصر wوهي:
الحالة أ: أن يبدأ wبصفر وأن يكون | |wزوجياً
الحالة ب: أن يبدأ wبواحد وأن يكون | |wزوجياً
الحالة ج: أن يبدأ wبصفر وأن يكون | |wفردياً
الحالة د: أن يبدأ wبواحد وأن يكون | |wفردياً
التعبير النمطي لكل من الحال ت السابقة هو:
)10(* الحالة :
)01(* الحالة :
0)01(* الحالة :
1)10(* الحالة :
وحيث أن Lتحتمل الحال ت الربعة السابقة فهي تمثل اتحاد الحال ت السابقة. وبالتالي فإن التعبير النمطي للغة Lهو:
لّ
*)10(1 + *)01(0 + *)01( + *)10( = Reg Exp for L
في الحقيقة يمكننا أيضا تبسيط التعبير النمطي السابق باستغل ل العنصر وعندها يمكننا كتابة التعبير النمطي السابق
ً
كالتالي:
)0+ Reg Exp for L = (ε +1)(01)*(ε
7
8. أولوية العمليات في التنفيذ
الولوية من اللعلى للدنى هي كالتالي:
* )النجمة(
)اللحاق( .
+
مثا ل:
1 + *10 = 1 + ) )*)1(( . 0 (
8
هل يمكنك تخيل التعبير النمطي لاسماء مواقع الإنترنت، أو للإيميل أو لعنوان IP
L * هي لا نهائية إذا وفقط إذا كانت | L|≥1 و L≠{ } إذا كانت L={ } فإن L* = { } إذا كانت L = Φ فإن L* = { }
مراجعة للأدوات : افرض أن A = {a,b} // the alphabet is composed of a and b فإن A* = { λ , a,b,aa,ab,ba,bb,aaa,aab,…} The symbol * is called the Kleene star. ∅ (empty set) λ (empty string) ( ) delimiter , ∨ + ∪ union (selection) . concatenation