Regex يبدأ بكلمة أو ينتهي بها: الرمزان ^ و$

22 دقيقة تقريبًا

في الدرس السابق اتعلمنا نعمل أول Regex بسيط باستخدام | بمعنى "أو"، واتعلمنا نستخدم () علشان نجمع أكتر من احتمال مع بعض. مثل (سعر|تكلفة|ثمن). وكان Search Console يجيب أي Query تحتوي واحدة من الكلمات دي.

لكن النهاردة عندنا مشكلة مختلفة. افترض إن عندك الكلمات دي:

  • iphone
  • iphone 17
  • iphone price
  • best iphone
  • buy iphone
  • iphone egypt

ولو استخدمت iphone هيظهر تقريبًا كل اللي فيه كلمة iphone، سواء كانت في الأول أو الوسط أو الآخر. لكن ماذا لو سؤالك كان: عايز الـQueries اللي تبدأ بكلمة iphone فقط؟ أو عايز الـQueries اللي تنتهي بكلمة iphone؟ أو عايز Query هي iphone فقط، لا قبلها ولا بعدها أي حاجة؟

هنا مجرد كتابة iphone مش كفاية. لازم نبدأ نتحكم في مكان وجود النص. وده اللي هنتعلمه النهاردة.

أول رمز: ^

الرمز ^ معناه "بداية النص". يعني لو كتبت ^iphone أنت بتقول: لازم النص يبدأ بـ iphone. خلينا نجرب:

^iphone
  • iphone
  • iphone 17
  • iphone price
  • best iphone
  • buy iphone
  • iphone egypt

لأن كلمة iphone موجودة فعلًا في "best iphone" و"buy iphone"، لكن مش في البداية.

القاعدة
لما تشوف ^iphone اقرأه "بداية النص، وبعدها iphone"، مش «رمز غريب اسمه caret». الاسم مش مهم دلوقتي، المعنى هو اللي يهمنا.

مثال بالعربي

عندك: كيف اختار لابتوب، كيف اشتري لابتوب، أفضل لابتوب للعمل، ما هو أفضل لابتوب، كيف اعرف مواصفات جهازي. وعايز تعرف: كل Queries اللي تبدأ بكلمة "كيف".

^كيف
  • كيف اختار لابتوب
  • كيف اشتري لابتوب
  • أفضل لابتوب للعمل
  • ما هو أفضل لابتوب
  • كيف اعرف مواصفات جهازي

طيب لو عندي أكتر من بداية؟

افترض إنك عايز الـQueries اللي تبدأ بـ كيف أو هل أو لماذا. ممكن نستخدم اللي اتعلمناه في الدرس السابق:

^(كيف|هل|لماذا) جزء جزء
  1. 1^ — بداية النص
  2. 2( — مجموعة
  3. 3كيف
  4. 4| — أو
  5. 5هل
  6. 6| — أو
  7. 7لماذا
  8. 8) — نهاية المجموعة

إذن Regex كله معناه: النص لازم يبدأ بكيف أو هل أو لماذا.

^(كيف|هل|لماذا)
  • كيف اختار لابتوب
  • هل الماك بوك مناسب للبرمجة
  • لماذا اللابتوب بطيء
  • أفضل لابتوب للبرمجة
  • لابتوب لماذا يسخن

ركز في آخر واحدة: "لابتوب لماذا يسخن" فيها كلمة "لماذا"، لكنها مش في البداية. فما ظهرتش.

الرمز الثاني: $

دلوقتي عكس الفكرة. الرمز $ معناه "نهاية النص". لو كتبت iphone$ معناه: لازم النص ينتهي بكلمة iphone.

iphone$
  • iphone
  • buy iphone
  • best iphone
  • iphone 17
  • iphone price

لأن آخر حاجة في الـQuery لازم تكون iphone.

مثال SEO واضح: افترض إن موقعك يستهدف دول مختلفة، وعايز تعرف الكلمات اللي بتنتهي بـ egypt:

egypt$
  • iphone price egypt
  • iphone price saudi
  • iphone price uae
  • best iphone egypt
  • egypt iphone price

آخر واحدة فيها egypt، لكن في البداية، مش النهاية.

طيب لو استخدمنا ^ و $ مع بعض؟

هنا بنوصل لفكرة مهمة جدًا. لو كتبت ^iphone$ اقرأها: بداية النص، iphone، نهاية النص. يعني مفيش أي حاجة قبل iphone، ومفيش أي حاجة بعدها. إذن النص بالكامل لازم يكون iphone بالضبط.

^iphone$
  • iphone
  • iphone 17
  • best iphone
  • iphone price

وده أول فرق مهم لازم يبقى واضح في دماغك.

الفرق بين الثلاثة

عندنا 3 Patterns، وكل واحد منهم سؤال مختلف — نجربهم على نفس البيانات:

iphone — يحتوي في أي مكانiphone
  • iphone
  • iphone 17
  • best iphone
  • buy iphone
  • iphone price
^iphone — يبدأ بـ^iphone
  • iphone
  • iphone 17
  • best iphone
  • buy iphone
  • iphone price
^iphone$ — يساوي بالكامل^iphone$
  • iphone
  • iphone 17
  • best iphone
  • buy iphone
  • iphone price

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

طب ليه Exact Match مهم في SEO؟

ممكن تقول: أنا ليه محتاج Query تكون كلمة واحدة بالضبط؟ في استخدامات كتير. مثلاً عندك Brand اسمه «nova»، وعايز تعرف أداء Query «nova» نفسها. لو استخدمت «nova» ممكن يظهر:

  • nova
  • nova store
  • buy nova
  • nova egypt
  • best nova product

لكن لو أنت عايز كلمة البراند فقط:

^nova$
  • nova
  • nova store
  • buy nova
  • nova egypt
  • best nova product

دلوقتي أنت بتعزل Query واحدة بالضبط. وده مفيد جدًا لما تحاول تفرق بين Pure Brand Query وبين Brand + Modifier.

توقّع النتيجة

عايز الـQuery اللي هي اسم البراند بالضبط، من غير أي إضافة. كام واحدة من الخمس دول هتتطابق مع ^nike$؟

^nike$
  • nike
  • nike shoes
  • nike egypt
  • buy nike
  • nike price

الفرق مهم: nike بس تقول "الشخص كتب اسم البراند فقط". nike زائد حاجة تقول "الشخص ذكر البراند في أي شكل". والفرق ممكن يكون مهم في التحليل.

دلوقتي ندخل على حاجة جديدة: الرموز الخاصة

لحد دلوقتي استخدمنا ^ $ | (). ودي مش حروف عادية، دي رموز Regex لها معنى. افترض إنك عايز تبحث عن "example.com". هل النقطة في Regex معناها فعلًا نقطة؟ الإجابة: لا. في Regex، النقطة . لها معنى خاص، ومعناها تقريبًا «أي حرف واحد». يعني لو كتبت example.com أنت مش بتقول حرفيًا "example ثم نقطة ثم com"، أنت بتقول "example ثم أي حرف ثم com".

خلينا نفهمها بمثال. Regex a.b ممكن يطابق:

a.b
  • a.b
  • acb
  • a-b
  • a1b

لأن . معناها "أي حرف واحد".

طب لو أنا عايز نقطة فعلية؟

هنا بنستخدم \. — يعني: أنا لا أريد معنى النقطة الخاص في Regex، أنا أريد Character النقطة نفسها. مثلاً example\.com ده معناه «example.com» حرفيًا. الرمز \ اسمه Escape، لكن زي ما اتفقنا، الاسم مش أهم حاجة. فكر فيه كده: الحرف اللي بعدي متتعاملش معاه كرمز Regex، اعتبره حرفًا عاديًا.

example\.com
  • example.com
  • exampleXcom

ليه الموضوع ده مهم في Search Console؟ لأنك هتتعامل كتير مع URLs. مثلًا لو عايز تعمل Pattern دقيق للدومين، لاحظ \. بدل . لأن النقطة جزء حقيقي من اسم الدومين. متحاولش تحفظ قائمة كبيرة من الرموز — إحنا هنتعلم كل رمز لما نحتاجه.

تطبيق عملي على Pages بدل Queries

لحد دلوقتي معظم الأمثلة كانت Queries. خلينا نبدأ نشوف إن نفس التفكير ينفع مع Pages. عايز كل الصفحات الموجودة داخل blog:

^https://example\.com/blog/
  • https://example.com/blog/
  • https://example.com/blog/python-seo/
  • https://example.com/
  • https://example.com/product/laptop/
  • https://example.com/services/

دلوقتي ^ بقت أداة لفهم هيكل الموقع، مش مجرد رمز حفظناه. مثال آخر — قسم المنتجات:

^https://shop\.com/product/
  • https://shop.com/product/iphone/
  • https://shop.com/product/samsung/
  • https://shop.com/category/phones/
  • https://shop.com/blog/iphone-review/

خطأ شائع: أنا عايز URL محدد واستخدمت بداية النص فقط

افترض إنك عايز الصفحة https://example.com/blog/ بالضبط. لو كتبت ^https://example\.com/blog/ هيظهر برضه:

^https://example\.com/blog/
  • https://example.com/blog/
  • https://example.com/blog/python/
  • https://example.com/blog/seo/

لأنك قلت له "ابدأ بالمسار ده"، لكن ما قلتش "وانتهِ هنا". لو عايز الصفحة دي فقط:

^https://example\.com/blog/$
  • https://example.com/blog/
  • https://example.com/blog/python/
  • https://example.com/blog/seo/

مثال مهم جدًا: كلمة السؤال نفسها

عندك: كيف اختار لابتوب، كيف اشتري لابتوب، كيف اعرف سعر اللابتوب، لابتوب كيف اختاره، أفضل لابتوب.

كيف — في أي مكانكيف
  • كيف اختار لابتوب
  • كيف اشتري لابتوب
  • كيف اعرف سعر اللابتوب
  • لابتوب كيف اختاره
  • أفضل لابتوب
^كيف — في البداية بس^كيف
  • كيف اختار لابتوب
  • كيف اشتري لابتوب
  • كيف اعرف سعر اللابتوب
  • لابتوب كيف اختاره
  • أفضل لابتوب

الفرق ده مهم لأنك بتحاول تصف شكل Query، مش مجرد وجود كلمة.

نجمع درس 1 مع درس 2

عايز Queries تبدأ بواحدة من: كيف، هل، لماذا، متى. نستخدم:

^(كيف|هل|لماذا|متى)
  • كيف اختار لابتوب
  • هل الماك بوك جيد
  • لماذا اللابتوب يسخن
  • متى اغير اللابتوب
  • أفضل لابتوب
  • لابتوب هل يستحق

لاحظ إننا بدأنا نبني Regex من مفاهيم صغيرة سبق وفهمناها.

مثال يحتاج تركيز شوية

عندنا Regex ^(iphone|samsung)$ — نفكه: بداية النص، ثم iphone أو samsung، ثم نهاية النص. إذن: النص بالكامل يكون iphone أو samsung فقط.

^(iphone|samsung)$
  • iphone
  • samsung
  • iphone 17
  • best samsung
  • samsung phone

لو فهمت المثال ده من غير ما تحفظه، إحنا ماشيين صح.

خد بالك
بص على ^(iphone|samsung) — دي معناها "النص يبدأ بـ iphone أو samsung". وده كويس، لكن لما نبدأ نبني Patterns أعقد بعدين، ترتيب الرموز هيبقى مهم جدًا. عشان كده من دلوقتي اتعود: متقرأش Regex ككتلة واحدة، فكّه جزء جزء.
طريقة القراءة اللي هنمشي بها
  1. 1^ = بداية النص
  2. 2( ) = مجموعة
  3. 3| = أو
  4. 4إذن ^(سعر|تكلفة|ثمن) = النص يبدأ بسعر أو تكلفة أو ثمن
  5. 5وعلى العكس: (مصر|السعودية)$ = النص ينتهي بمصر أو السعودية
جرّب بنفسك

عندك: كيف اتعلم seo، هل seo صعب، أفضل كورس seo، seo كيف اتعلمه، لماذا seo مهم. مطلوب: Queries تبدأ بكيف أو هل أو لماذا.

  • كيف اتعلم seo
  • هل seo صعب
  • أفضل كورس seo
  • seo كيف اتعلمه
  • لماذا seo مهم
جرّب بنفسك

عندك: iphone egypt، iphone saudi، price iphone egypt، egypt iphone، iphone uae. مطلوب: Queries تنتهي بـ egypt.

  • iphone egypt
  • iphone saudi
  • price iphone egypt
  • egypt iphone
  • iphone uae
جرّب بنفسك

عندك: seo، seo course، learn seo، seo tools. مطلوب: Query تساوي seo فقط.

  • seo
  • seo course
  • learn seo
  • seo tools
جرّب بنفسك

عندك Pages: https://example.com/blog/، https://example.com/blog/seo/، https://example.com/product/، https://example.com/blogger/. مطلوب: الصفحات الموجودة داخل /blog/.

  • https://example.com/blog/
  • https://example.com/blog/seo/
  • https://example.com/product/
  • https://example.com/blogger/

لاحظ إن /blogger/ مش نفس /blog/ — وده مثال كويس على أهمية الدقة.

الاختبار التطبيقي

عندك: كيف اختار macbook، هل macbook مناسب للبرمجة، أفضل macbook للبرمجة، macbook هل يستحق، macbook، macbook pro، شراء macbook، لماذا macbook غالي.

تحدّي Regex

Queries تبدأ بكيف أو هل أو لماذا

اكتب Regex للـQueries التي تبدأ بـ كيف أو هل أو لماذا.

لازم يظهر
  • · كيف اختار macbook
  • · هل macbook مناسب للبرمجة
  • · لماذا macbook غالي
لازم ما يظهرش
  • · أفضل macbook للبرمجة
  • · macbook هل يستحق
  • · macbook
  • · macbook pro
  • · شراء macbook
جرّب بنفسك

اكتب Regex يعرض macbook فقط، بدون macbook pro أو شراء macbook.

  • macbook
  • macbook pro
  • شراء macbook
جرّب بنفسك

عندك URL: "https://example.com/blog/". اكتب Pattern يطابق الصفحة دي فقط، من غير صفحات المقالات الموجودة تحتها.

  • https://example.com/blog/
  • https://example.com/blog/python-seo/

فسّر ليه example.com مش أدق اختيار لو أنت تقصد النقطة الحقيقية داخل اسم الدومين — لازم تهرّبها: example\.com.

اختبار التفكير

لو عايز تعرف كل Queries التي تبدأ بكلمة "أفضل"، إيه السؤال الأول اللي لازم تسأله؟ مش "أكتب Regex إزاي؟" لكن: "هل أنا فعلًا مهتم بوجود كلمة أفضل في أي مكان، ولا بشكل Query يبدأ بها؟" لأن أفضل و^أفضل بيجاوبوا سؤالين مختلفين.

القاعدة
Regex مش مجموعة رموز. كل رمز بنضيفه لازم يغير السؤال اللي إحنا بنسأله للبيانات.

قبل الدرس التالي

لحد هنا بقى عندنا | و() و^ و$ و\.. لكن الأهم من الرموز إنك أصبحت قادر تفرق بين "يحتوي"، و"يبدأ بـ"، و"ينتهي بـ"، و"يساوي النص بالكامل".

في الدرس التالي هنبدأ نواجه مشكلة مختلفة تمامًا. مش هنبقى عارفين الكلمة اللي بندور عليها أصلًا. هنسأل مثلًا: عايز Queries المكونة من 5 كلمات أو أكثر، أو 7 كلمات أو أكثر، أو 10 كلمات أو أكثر. وهنا هنبدأ لأول مرة نبني Regex يعتمد على شكل الـQuery وعدد الكلمات، مش على كلمات نعرفها مسبقًا.

أحسنت، وصلت إلى نهاية الدرس.