محاولة العثور على Twitter RT مع تعبيرات منتظمة و PHP

StackOverflow https://stackoverflow.com/questions/1461911

  •  13-09-2019
  •  | 
  •  

سؤال

أحاول العثور على التعبير العادي الصحيح لمطابقة جميع سيناريوهات RT على Twitter (لا يمكن أن تنتظر إلى Twitter's API Retweet الجديد). الطريقة التي أراها، يمكن أن تكون RT في بداية أو منتصف، أو نهاية السلسلة التي تم إرجاعها من Twitter. لذلك، أحتاج إلى شيء في بداية ونهاية هذا التعبير العادي:

([RR]) ([TT])

بغض النظر عن ما أحاوله، لا يمكنني مطابقة جميع السيناريوهات في تعبير واحد منتظم.
حاولت

^ | S +

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

S + | $

لتتناسب مع الحالة عندما تظهر RT إما في نهاية السلسلة أو هناك أحرف مسافة بيضاء واحدة أو أكثر تتابع ذلك، كما هو الحال مع "PRE" - لم يعمل.

هل يمكن لشخص ما أوضح ما أفعل الخطأ هنا؟ أي مساعدة أو اقتراحات سيكون موضع تقدير كبير (كما هو الحال دائما :))

هل كانت مفيدة؟

المحلول

ربما ستكون أسعد مع شيء مثل:

/\brt\b/i

والتي سوف تجد حالات معزولة من RT (أي، محاطة حدود الكلمات)، واستخدام /i معدل في نهاية Regex لجعلها غير حساسة للحالة.

تريد كلمة حدود بحيث لا تنتهي من التفكير في تغريدات عشوائية تحتوي على كلمات مثل "الفن" و "الكوارتز" هي بالفعل إعادة تغريد. حتى ذلك الحين، سيكون لديك ايجابيات خاطئة.

بشكل افتراضي، يمكن أن تطابق تعبير منتظم (وسوف) في أي مكان داخل سلسلة، لذلك لا تحتاج إلى حساب ما قد تسبق أو تتبع مطابقتك إذا كنت لا تهتم بالفعل بما هو عليه أو إذا كان موجودا.

نصائح أخرى

if(preg_match('/\brt\s*@(\w+)/i', $tweet, $match))
    echo 'Somebody retweeted ' . $match[1] . "\n";
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top