أعتقد أنني فعلت watched_word_regular_expression بشكل افتراضي، ولم أدرك أن هذا يكسر خاصية “التصرف على كلمات كاملة”. هل من الضروري أن يكون التصرف على كلمات كاملة غير متوافق مع التعبيرات النمطية؟
بمعنى آخر، هل يجب أن أعتبر هذا خطأً أم قيدًا ضروريًا ناتجًا عن ميزة أخرى؟
حتى الآن، ما زلت أعتبره خطأً. لا أرى أي سبب يجعل تحليل الكلمات الكاملة بدون تعبيرات نمطية غير متوافق مع التحليل باستخدام التعبيرات النمطية عند تحديد تعبير نمطي.
إذا كنت تستخدم التعابير النمطية (regex) لبعض الكلمات التي تراقبها، فإن ذلك ينطبق على جميعها. وبناءً على ذلك، إذا تم تمكين التعابير النمطية وقمت بتكوين الوسم التلقائي لـ art، فمن المتوقع أن يُوسَم artificial. وللتحري عن كلمة art فقط، استخدم حرف التحكم الخاص بحدود الكلمة \b. وفي حالة art، سيكون ذلك على النحو التالي: \bart\b
شكرًا جزيلاً للجميع. يجب أن أعتذر إذا كان فهمي البسيط نسبيًا للتعبيرات النمطية (regular expressions) غير كافٍ وأدى إلى سوء فهمي لكيفية عملها مع الكلمات المراقبة. لكن… بعض النقاط:
أعتقد أنني ظننت أن سياق التعبير النمطي يُعتبر شيئًا مثل “سلسلة ضمن حدود الكلمات”. ما الذي قد يكون منطقيًا آخر؟ بالتأكيد ليس مستند الموضوع بأكمله؟ في هذه الحالة، لكي يتم وضع علامة على كلمة “artificial”، سأحتاج إلى تحديد art* (أو art.* أو ما شابه، كما ورد في عنوان هذا الموضوع).
جوشوا: شكرًا لك على اقتراحك حول رمز الوصف الحدودي للكلمة. جربته للتو ولم يعمل. لا في دالة الاختبار ولا في الواقع الفعلي. لذا… يبدو حاليًا أنه لا توجد طريقة بديلة (أو “طريقة صحيحة” للحصول على السلوك المطلوب).
دالة الاختبار رائعة جدًا. يبدو أنها تتصرف تمامًا كما توقعت حدسيًا. art تُفعّل فقط عند ظهور كلمة “art” ككلمة منفصلة (ولا تُفعّل مع “artificial”)، بينما art* تُفعّل مع “artificial” كما هو متوقع. علاوة على ذلك، art* life تُفعّل مع كلاً من “art life” و"artificial life". فكرت أيضًا ربما أن دالة الاختبار قد لا تستخدم تحليل التعبيرات النمطية إذا أدخلت كلمة واحدة فقط، لكن لا… foo* art تُفعّل مع “foobar art” ولا تُفعّل مع “foobar artificial”. لذا… يبدو أن من كتب دالة الاختبار يفكر بالطريقة التي أفكر بها (أعتقد).
في الخلاصة،
اقتراح جيف بتذكير أن watched_words_regular_expressions مفعل هو اقتراح جيد.
يجب أن يتطابق سلوك دالة الاختبار مع السلوك الفعلي.
وبالنسبة لي، تفضيلي هو أن يتطابق السلوك الفعلي مع سلوك دالة الاختبار الحالي.
إذا احتاج المرء إلى معرفة أكبر بالتعبيرات النمطية مما تقترحه دالة الاختبار الحالية، فسيكون من الجيد وجود أمثلة في مكان ما.
إذا كانت هناك طريقة بديلة أو “طريقة صحيحة” (مثل “استخدم \bart\b للحصول على السلوك المطلوب”)، فسأكون سعيدًا باستخدامها.
مرة أخرى، شكرًا للجميع على اهتمامهم بهذه المسألة البسيطة نسبيًا لمنصة رائعة!
إذا كانت إعدادات الموقع watched words regular expressions مفعّلة، فيجب عليك استخدام \bart\b، حيث يمثل \b حدود الكلمة. أما إذا كانت إعدادات الموقع معطّلة، فلا داعي لاستخدامها لأن حدود الكلمة تُضمَّن تلقائيًا.
لقد اختبرت ذلك للتو وهو يعمل بشكل جيد بالنسبة لي، بما في ذلك نافذة الاختبار:
مرحبًا يا بيانكا،
شكرًا جزيلاً لكِ على التدقيق في هذا الأمر.
كنتُ مرتبكًا بشأن تمكين “التعبيرات النمطية للكلمات الخاضعة للمراقبة”. ظننتُ أنها تُفعّل تلقائيًا إذا استخدمتُ حرف النجمة (*) في مواصفات التفعيل التلقائي. أدرك الآن أن هذا ليس هو الحال، لذا لا غرابة في فشل محاولتي باستخدام \bart\b.
سأراجع “أحدث إصدار” للحصول على تطبيقك لدالة الاختبار. بالنسبة لي، عملت “اختبار” دائمًا، تمامًا كما هو الحال بالنسبة لكِ.