لنفترض أننا لدينا النص التالي والذي نريد أن نقوم بإحاطة الرابط في أول النص بوسم <strong>
http://www.prosentra.com is a type of URLs that consists of a protocol (http://) and a domain name (www.prosentra.com). another type of URLs, is the one that uses an ssl certificate which makes the URL be https://makiomar.com
مبدئياً يمكن أن تجعل المحرك يقوم بمطابقة بداية النص عن طريق علامة الـ Caret ^ ، فالنمط ^a يعني بداية النص متبوعاً بحرف a ، وبالتالي عند تطبيق النمط على abc تحدث مطابقة لأن a في بداية النص لكن لا يطابق cba.
رجوعاً إلى النص الذي نريد البحث داخله، سنقوم أولا بكتابة النمط الذي سيبحث عن الروابط في النص وهو https?:\/+(w{3}\.)?\w+\.[a-z]{2,3} (تجاهل تفاصيل النمط حالياً)، وعند تطبيقه على النص سنحصل عى المطابقات التالية
وكما تلاحظ فقد تم تحديد جميع الروابط في النص، ولكن نريد أن نحصل على الرابط في أول النص فقط، هنا يأتي دور الـ Caret ^ ، فسنقوم بتغيير النمط ليصبح ^https?:\/+(w{3}\.)?\w+\.[a-z]{2,3} وبالتالي تكون النتيجة
الآن حصلنا على المطابقة التي نريدها، بالنسبة للإستبدال بالمطلوب فهذا معتمد على موضوع خاص بمايسمى التجميع والإلتقاط Capturing groups.
أما إذا أردنا أن تكون نتيجة المطابقة هي الرابط في نهاية النص علينا استخدام العلامة $، فالنمط $a يعني نهاية النص مسبوقاً بحرف a ، وبالتالي عند تطبيق النمط على cba تحدث مطابقة لأن a في نهاية النص لكن لا يطابق abc.
وبالتالي نقوم بالتعديل على النمط بحيث يكون (https?:\/+(w{3}\.)?\w+\.[a-z]{2,3})$ فتكون النتيجة
وكما نلاحظ أن هذه الإرتكازات لاتطابق شيء في النص نفسه وإنما هي أماكن يعرفها المحرك وبالطبع هذه الإرتكازات من العناصر المهمة جداً والتي تساعد في كثير من الوظائف مثل عمليات التدقيق Validation في مدخلات المستخدم نماذج الموقع مثل التسجيل والدخول وغيرها.
تخيل أنك تريد التأكد من أن المُدخل عبارة عن رقم (بالطبع هناك دالة في لغة البرمجة نفسها تقوم بذلك، ولكن للتوضيح فقط)، فيمكن التحقق من مطابقة المدخل للنمط /^\d+$/ بحيث يكون بين بداية النص ونهايته أرقام فقط.
على الرغم من أن كلا من ^ و $ تستخدم للمطابقة مع بداية ونهاية النص، يمكن أيضاً تسخدم للمطابقة مع بداية ونهاية السطر ولكن هذا يحتاج لتغيير إعدادات محرك التعبير المنتظم Regex modifiers (نتحدث معها في موضوع منفصل) بتفعيل خاصية تعدد الأسطر Multiple line، فمثلا إذا كان هناك First line\nSecond line فإن ^ تقوم بمطابقة بداية السطر قبل F وبداية السطر بين s و \n ، وتقوم $ بمطابقة نهاية السطر بين e و \n وأيضاً بعد e في النهاية السطر الثاني.
بالنسبة إلى $ فكما قلنا فهي تطابق فقط نهاية النص ولكن بتفعيل تعدد الأسطر فيمكنها أن تطابق نهاية النص أو فاصل السطر \n ولكن هناك بعض الأنظمة التي تعتبر \r\n مجتمعتان نهاية السطر وبالتالي هنا $ لاتقوم بمطابقة \r\n ، ولمطابقة ذلك نستخدم \r?$ أو \r*$ بدلاً من $ فقط.
هناك قواعد أخرى تخص الإرتكازات نتحدث عنها في موضوع النقطة . أو Regex Dot
بداية ونهاية النص دائماًقلنا أنه يمكن مطابقة كلا من ^ و $ مع بداية ونهاية النص أو السطر، لكن أحياناً نحتاج لمطابقة بداية/نهاية النص دائماً، وهنا يمكن استخدام \A لمطابقة بداية النص و \Z لمطابقة نهاية النص. فالنمط \A\d+ يعني بداية النص فقط مطبوعاً بأرقام وتحدث مطابقة مع 222 لكن عن إضافة فاصل للسطر هكذا 22\n2 فإن 2 بعد فاصل السطر لا تدخل في المطابقة لأنها بعد فاصل للسطر (بالطبع عند الضغط على زر Enter فإن هذه الـ 2 تصبح في أول السطر لكن هذا لايعني أنها بداية النص).
كذلك عند مطابقة \d+\Z مع 22\n2 تحدث مطابقة مع 2 بعد فاصل السطر لأن بعده مباشرة نهاية النص وليس مع 22 قبل فاصل السطر، لأن بعدها فاصل سطر وليس نهاية نص.
هناك بعض النكهات التي لاتدعم \A أو \Z مثل جافاسكريبت و POSIX و XML و XPATH ويجب عليك فقط استخدام ^ OR $




