هل حلمتم يوما بتعلم الصينية؟ ممتاز في هذا المقال سوف أعلمكم شيئا يشبهها, أي أنه يمكنكم كتابة شيء مثل هذا :

		(((https?|ftp)://(w{3}\.)?)(?<!www)(\w+-?)*\.([a-z]{2,4}))

هذا ما نسميه التعابير النمطية أو regular expression. التعابير النمطية عبارة عن نظام قوي و سريع للبحث عل سلسلة معينة من الحروف داخل سلاسل كبيرة (جملة، نصوص…)، أو بعبارة أخرى هو استعمال وظيفة ابحث/استبدل بطريقة جد متطورة و التي لا يمكنكم التخلي عنها فور تعلمها و استعمالها. فالتعابير النمطية سوف تسمح لنا بالبحث و الاستبدال داخل الجُمل و النصوص بطريقة فعالة وسريعة في نفس الوقت، و هذه بعض الأمثلة مما يمكن أن نفعله باستعمالها :

و هلم جر من العمليات المعقدة التي يمكن القيام بها على النصوص أو الصفحات و التي لا تعد و لا تحصى. الشيء الجميل الذي يمكن البدأ به هو أن كل لغات البرمجة (على كل حال التي أعرفها ) لا تحتاج لتفعيل أي مكتبة أو برنامج خاص للعمل بالتعابير النمطية و هذا لكثرة استعمالاتها. في هذا المقال و إن كنت مُحبًا لperl في التعامل مع التعابير النمطية، سوف أركز على ruby تماشيا مع نمط المدونة و باعتبارها لغة تشبه perl في العديد من المواصفات و التي من بينها التعابير النمطية.

التركيب :

داخل روبي التعبيرات النمطية لها الشكل التالي :

							/pattern/modifiers

بحيث تعبر pattern عن التعبير و modifiers عن متغيرات نمط الربط. فيما يخص هذه الأخيرة فإن روبي يدعم المتغيرات التالية :

بالاضافة إلى انه يمكننا مزج العديد من هذه المتغيرات مع تعبير نمطي واحد، فمثلا لتجاهل حالة الأحرف و الفضاءات الخالية نمزج المتغيرين التاليين : ix/.

نماذج التعابير النمطية في روبي :

باستثناء أحرف التحكم (+ ? . * ^ $ ( ) [ ] { } | ) ، كل حرف يطابق نفسه، كما أنه يمكن الغاء خاصية التحكم في الحروف باستعمال الخط المائل العكسي backslash “". هذه اهم تركيبات التعابير النمطية الموجودة داخل روبي :

أمثلة التعابير النمطية :

ربط الأحرف و الأرقام :

حالات التكرار :

في الجزء الثاني إن شاءالله، سأكمل الامثلة المتداولة و سوف أعرض لكم طريقة البحث و الاستبدال بواسطة روبي و التعابير النمطية.