الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Regular Expression

Featured Replies

بتاريخ:

إن كنت لا تعرف الـ Regular expression فتأكد بأنه قد فاتك الكثير، لكن ليس بعد الآن.

بداية الـ Regular Expression كانت مع البيرل ثم تطورت و ظهرت أهميتها و توسعت لتشمل أغلب لغات البرمجة النصية Scripting Languages لأنها تفيد كثيراً في هذا النوع من البرمجة التي تحتاج إلى كود سريع و في نفس الوقت قصير و منه هذه اللغات التي تقدم دعم لها الـ SQL و الـ Jscript و Javascript و VBScript و ASP و حتى استعلامات الـ SQL تقدم دعم لها.
قدمت Microsoft مكتبة دعم للـ Regular Expression حتى تستطيع استخدامها بالـ Vbscript و الـ JScript أو بأي لغة أخرى.
أنصح بالأطلاع على Microsoft Windows Script Technologies http://msdn.microsoft.com/scripting .

استخدام الـ Regular Expressions سيزيل عنك الكثير و الكثير من العناء و يجعل الكثير من الأمور التي تبدو معقدة أيسر و أسهل فمثلاً لو أردت عمل برنامج لاستخراج النصوص العربية من أي ملف فسيتطلب ذلك كود طويل و مليء بالأخطاء لكن و بعدة أسطر سهلة يمكنك إنجاز نفس العمل و بالسرعة و الأداء المطلوب.

لننتقل إلى الجانب العملي.
افتح الـ References من Project و أضف الـ Microsoft VBScript Regular Expression 5.5


ملاحظة:بعد إضافة المكتبة للـ References افتح الـ Object Browser من قائمة View أو اضغط F2 ستتمكن عندها من استعراض أغراض و خصائص العنصر RegExp.

أصبحت الآن جاهز لاستخدام هذه الـ Class الخارجية .

Dim myRegExp As RegExp 
Dim data As String, itm, res 

data = Text1.Text 
'ننشء نسخة جديدة من هذا العنصر لنتعامل معها 
Set myRegExp = New RegExp 
'لتجاهل حالة الأحرف كبيرة أو صغيرة 
myRegExp.ignorecase = True 'خاصية تجاهل حالة الأحرف أم لا 
myRegExp.Global = True 'ضروري إن كنا نريد استخراج كل النتائج 
myRegExp.MultiLine = True 'إن كنا نريد استخدام نصوص متعددة الأسطر 
'تحديد نموذج العمل 
myRegExp.Pattern = "test" 'خاصية تحديد نموذج البحث 
'تنفيذ العملية (استخراج أو استبدال) 
Set res = myRegExp.execute(data) 'عملية بحث فستعيد كولكشن بنتائج البحث 
'res = myRegExp.Replace(Data, replace_str) 'عملية استبدال فستعيد عدد مرات الاستبدال 
'نأخذ الخرج و نتعامل معه.... 

For Each itm In res 
List1.AddItem itm.Value & " | " & itm.FirstIndex & " | " & itm.Length 
Next



بالنسبة للنموذج فبإمكانك استخدام الصيغ القياسية للـ Regular Expressions وهذا شرح مبسط لها:

لو كتبنا بالنموذج أي تسلسل أحرف مثل arabteam و عملنا عملية استبدال فسيقوم باستبدال كل تواجد ل arabteam بالنص.

و هي محرف الهروب escape character أي إذا أردت إدراج محرف محجوز مثل الـ $ أو * أو . أو غيرها فضع الـ قبلها ليتعامل معها كمحرف.

؟ و * و + تدل على أن المحرف أو المجال الذي يسبقها من الممكن تكراره فالـ * تدل على تكرار من 0 حتى عدد غير محدود مثل:
arabteam20*
هنا تتحقق عند arabteam2 و arabteam20 و arabteam200 و arabteam2000 و arabteam20000 و ....
و لو استخدمنا الـ + لدلت على تكرار 1 أو أكثر، مثال:
arabteam20+
هنا يتحقق عند arabteam20 و arabteam200 و .....
بينما تدل الـ ؟ على وجود أو عدم وجود أي إما أن يوجد مرة واحدة أو لا يوجد مثل:
arabteam20?
هنا يتحقق عند الـ arabteam20 و الـ arabteam2 فقط.
طيب إذا أردنا أن نحدد نحن عدد المرات التي من الممكن أن يتكرر المحرف بأن نحدد أقل و أعلى حد مسموح عندها نستخدم{Min,Max} فمثلاً.
arabteam20{0,3}
هنا يتحقق الكود عند تكراره من 0 مرة إلى 3 مرات
arabteam2 و arabteam20 و arabteam200 و arabteam2000

المجالات:
تدل النقطة . على أي حرف فمثلاً:
arabte.m هنا تتحقق عند arabteam و arabtebm و arabteacm و arabtedm و ....
و إذا كنا تحديد المجال المسموح به من المحارف نضعها بين قوسين كبيرين كالتالي و داخله بداية المجال-نهاية المجال:
arabte[a-c]m
المجال يدل على الأحرف المحصورة بين الـa و الـ C أي abc و منه فيتحقق المجال هذا عند: arabteam و arabtebm و arabteacm فقط
و إن لم نضع الـ - في المجال فستدل على تواجد هذا الحرف أو مجموعة الأحرف الموجودة داخل القوسين مثل:
arab[team]2000
يتحقق عند arabteam2000
مثال آخر:
arab[team]?2000
يتحقق عند arabteam2000 و arab2000

الـ | : تدل على (أو) مثلاً:
arab[team|team2000]
تتحقق عند arabteam و arabteam2000.

الـ ^: تدل أشارة ^ على الأستثناء إن وجدت داخل المجال و سنرى وظيفة أخرى لها إن لم توجد داخل المجال، مثال:
arab[^t]eam
هنا تتحقق عند arablead,arabcead .... ما عدا arabteam.

وجود الـ ^ إن لم تكن داخل قوسين كبار يدل على أن الجملة يجب أن تبدأ بكذا و الـ $ تعني أن الجملة يجب أن تنتهي بكذا .مثال:
^arab[.]*
تتحقق على أي جملة تبدأ .....

أمثلة عملية أتمنى أن تفكرو فيها و تفهموها و السؤال إن وجد أي استفسار.
لاستخراج أو البحث عن أرتباطات في نص:
(http://|www.)[a-z0-9/-._?%+;&=]+
لاستخراج الأيميلات من نص أو التحقق من صحة أيميل:
[a-z0-9_-.]+@[a-z0-9_-.]{1,}.[a-z0-9]{2,4}
لاستخراج الأرتباطات من الـ HTML :
.*
لاستخراج نصوص عربية:
[ءrnsأ-ي]{3,}


منقول

  • بعد 4 سنة...
بتاريخ:

موضوع ممتاز ومهم
شكرا جزيلا

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.