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"، لكن مش في البداية.
مثال بالعربي
عندك: كيف اختار لابتوب، كيف اشتري لابتوب، أفضل لابتوب للعمل، ما هو أفضل لابتوب، كيف اعرف مواصفات جهازي. وعايز تعرف: كل Queries اللي تبدأ بكلمة "كيف".
^كيف- كيف اختار لابتوب
- كيف اشتري لابتوب
- أفضل لابتوب للعمل
- ما هو أفضل لابتوب
- كيف اعرف مواصفات جهازي
طيب لو عندي أكتر من بداية؟
افترض إنك عايز الـQueries اللي تبدأ بـ كيف أو هل أو لماذا. ممكن نستخدم اللي اتعلمناه في الدرس السابق:
- 1^ — بداية النص
- 2( — مجموعة
- 3كيف
- 4| — أو
- 5هل
- 6| — أو
- 7لماذا
- 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 17
- best iphone
- buy iphone
- iphone price
^iphone- iphone
- iphone 17
- best iphone
- buy iphone
- iphone price
^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^ = بداية النص
- 2( ) = مجموعة
- 3| = أو
- 4إذن ^(سعر|تكلفة|ثمن) = النص يبدأ بسعر أو تكلفة أو ثمن
- 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 غالي.
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 يبدأ بها؟" لأن أفضل و^أفضل بيجاوبوا سؤالين مختلفين.
قبل الدرس التالي
لحد هنا بقى عندنا | و() و^ و$ و\.. لكن الأهم من الرموز إنك أصبحت قادر تفرق بين "يحتوي"، و"يبدأ بـ"، و"ينتهي بـ"، و"يساوي النص بالكامل".
في الدرس التالي هنبدأ نواجه مشكلة مختلفة تمامًا. مش هنبقى عارفين الكلمة اللي بندور عليها أصلًا. هنسأل مثلًا: عايز Queries المكونة من 5 كلمات أو أكثر، أو 7 كلمات أو أكثر، أو 10 كلمات أو أكثر. وهنا هنبدأ لأول مرة نبني Regex يعتمد على شكل الـQuery وعدد الكلمات، مش على كلمات نعرفها مسبقًا.
أحسنت، وصلت إلى نهاية الدرس.