العربية

أدوات النص واليومية · مجموعة أدوات النص

كيف يعمل البحث عن الكلمة بأكملها: حدود الكلمات ومشكلة القط | الكلب

· كيف يعمل

regex البحث والاستبدال تحرير النص

تبقى الكلمات قطة وكلب تمر عبر الحدود أثناء التسلسل دون تغيير
الرسم التوضيحي المتجه الأصلي ToolAcre

يشرح ما هو حد الكلمة في JavaScript من التعبيرات العادية، ولماذا يجب ألا تتطابق كلمة "cat" داخل كلمة "concatenate"، ولماذا يجب تجميع بديل مثل cat|dog قبل إضافة الحدود.

إعادة التسمية التي غيرت "التسلسل" - لماذا تؤدي عملية البحث والاستبدال البسيطة لكلمة قصيرة إلى إتلاف الكلمات الأطول

تبدو إعادة تسمية المنتج غير ضارة حتى يظهر اسم قصير داخل كلمات غير ذات صلة. يؤدي استبدال كل تكرار لـ `cat` بـ `lynx` إلى تغيير `concatenate` إلى `conlynxenate`، على الرغم من عدم وجود محرر ينوي إعادة تسمية جزء من هذا الفعل. لا يمكن لعدد التطابقات وحده حماية المستند عندما تكون قاعدة البحث واسعة جدًا.

تعمل مطابقة الكلمات بالكامل على تضييق القاعدة قبل حدوث أي استبدال. في ToolAcre، يؤدي تمكين الكلمة بأكملها إلى جعل `cat` المستقلة مؤهلة مع ترك نفس الأحرف داخل `concatenate` دون تغيير. التمييز بنيوي وليس قائمًا على القاموس: يقوم محرك التعبير العادي بالتحقق من الأحرف مباشرة بجانب كل تطابق محتمل.

ماذا يعني \b - موضع العرض الصفري بين حرف الكلمة وحرف غير كلمة

في التعبير العادي JavaScript، يقوم `` بوضع علامة على حدود الكلمات ذات العرض الصفري. لا يستهلك أي حرف أو مسافة أو علامات الترقيم. بدلاً من ذلك، فإنه ينجح في الموضع الذي يكون فيه أحد الجانبين حرف كلمة والجانب الآخر ليس كذلك، بما في ذلك بداية النص أو نهايته عندما يكون الحرف المجاور مؤهلاً كحرف كلمة.

توفر فئة JavaScript `w` أحرف الكلمات ذات الصلة بهذا التنفيذ: ASCII الحروف والأرقام والشرطة السفلية. ولذلك فإن `cat` يطابق `cat` بجانب المسافات أو الفواصل أو نهايات الأسطر، ولكن ليس المقطع `cat` داخل `concatenate`، لأن كلا جانبي هذا المقطع يستمران خلال أحرف الكلمة ولا يوجد حدود هناك.

الكلمة بأكملها في الوضع الحرفي - يتم تهريب نص البحث أولاً، ثم تغليفه بحدود

مع إيقاف تشغيل Regex، يقوم ToolAcre أولاً بتجنب كل حرف أولي للتعبير العادي في نص البحث. تظل النقطة فترة حرفية، وتظل الأقواس أقواسًا حرفية، وتظل علامة الزائد علامة زائد. فقط بعد خطوة الهروب هذه، تقوم الكلمة الكاملة بالتفاف المصدر الناتج، لذلك لا يمكن أن تصبح علامات الترقيم للمستخدم بصمت بناء جملة regex.

الغلاف هو `(?:… )` بدون المساحة المعروضة: الجزء الداخلي `(?:…)` عبارة عن مجموعة غير ملتقطة. بالنسبة إلى حرفي بسيط مثل `cat`، فإن التأثير يعادل `cat`. لا يزال التجميع مهمًا لأن مسار التحويل البرمجي الواحد يجب أن يتعامل بأمان مع المصطلحات البسيطة والبدائل الأكثر تعقيدًا دون تغيير ترقيم مجموعة الالتقاط.

الكلمة بأكملها في وضع regex - لماذا يجب أن يكون القط|الكلب محددًا كمجموعة، أو أن الحدود ترتبط بفرع واحد فقط

يترك وضع Regex النموذج المُدخل كما هو، لكن الكلمة الكاملة ستظل تجمعه قبل إضافة الحدود. بالنسبة إلى `cat|dog`، يقوم ToolAcre بتجميع النموذج المفاهيمي `(?:cat|dog)`. لذلك يجب أن يبدأ كلا البديلين وينتهيا عند حدود الكلمات، لذا فإن `cat` المستقل و`dog` المستقل يتطابقان تحت نفس القاعدة.

بدون هذه المجموعة، سوف ينقسم `cat|dog` إلى فرعين: الحد الأيسر سيقيد `cat` فقط، بينما سيقيد الحد الأيمن `dog` فقط. التناوب له أسبقية أقل من التسلسل المحيط. التجميع هو ما يطبق تأكيدات الحدود على الاختيار بأكمله بدلاً من توزيع تأكيد واحد بشكل غير متساو.

مثال عملي - إعادة تسمية منتج عبر مستند مع تشغيل الكلمة الكاملة، وفحص عدد الاستبدال مقابل التوقعات

الصق مقطعًا تمثيليًا يحتوي على `cat`، `dog`، `concatenate`، `dogged` وعلامات الترقيم مثل `cat, dog.` أدخل `cat|dog`، وقم بتشغيل Regex وWhole word، وقم بتشغيل استبدال الكل باسم المنتج الجديد. يجب أن تتغير الكلمتان الحيوانيتان المستقلتان؛ يجب أن تظل الكلمات الأطول كما كانت تمامًا.

اقرأ عدد الاستبدال المُبلغ عنه قبل قبول التعديل. إذا كان المستند يحتوي على ثلاثة مراجع مستقلة ومعروفة ولكن الأداة تشير إلى مرجعين أو اثني عشر، فحدد تراجع وتفحص نماذج السياقات. ToolAcre يحسب التطابقات قبل استدعاء استبدال السلسلة القياسية، وبالتالي فإن الإجمالي المعروض هو فحص عملي لقاعدة البحث التي قمت بتجميعها بالفعل.

حيث تفاجئك حدود الكلمات — أحرف الكلمات الخاصة بـ JavaScript هي ASCII أحرف وأرقام وشرطة سفلية، لذا تحتاج الكلمات ذات العلامات المميزة والكلمات غير اللاتينية إلى الاختبار

لا تطبق هذه الحدود قاموسًا متعدد اللغات أو خوارزمية تجزئة النص Unicode. نظرًا لأن الحروف المحركة والنصوص غير اللاتينية تقع خارج فئة الكلمات ذات النمط ASCII المستخدمة هنا، فإن الكلمة الكاملة يمكن أن تُرجع صفرًا أو تنتج مواضع حواف مفاجئة لمصطلحات مثل `café`. يمكن أن تؤدي علامات الترقيم داخل مصطلح البحث إلى عدم التطابق نفسه.

اختبر اللغة والتهجئة بدقة قبل إجراء تعديل مجمع، خاصة بالنسبة للأسماء التي تحتوي على علامات التشكيل أو الفواصل العليا أو الواصلات. يقوم تأكيد الحدود بمقارنة فئات الأحرف المجاورة فقط؛ ولا يعرف ما إذا كانت الطباعة تشكل كلمة بشرية واحدة. إذا فشلت العينة، فاستخدم تعبيرًا عاديًا مصممًا بشكل متعمد لتلك المناطق المحيطة بدلاً من الثقة في خانة الاختيار.

حيث تفاجئك حدود الكلمات JavaScript: أحرف الكلمات ذات النمط ASCII ليست كلمات لغوية

توفر الأداة خيارًا منفصلاً حساسًا لحالة الأحرف، على عكس أي إشارة ضمنية إلى أن معالجة الحالة غائبة عن الواجهة. يؤدي مسحها إلى إضافة علامة غير حساسة لحالة الأحرف لـ JavaScript. ومع ذلك، يستخدم التنفيذ فقط المطابقة العامة بالإضافة إلى عدم حساسية حالة الأحرف الاختيارية؛ ولا يضيف علامات Unicode أو متعددة الأسطر أو نقاط الكل أو علامات لاصقة أو علامات أخرى.

لا تعمل هذه المقالة أيضًا على تحويل `` إلى حدود مدركة لـ Unicode أو حل الرموز المميزة الخاصة باللغة. لا تعد عمليات الهروب من الخاصية JavaScript بديلاً هنا لأن الأداة لا تقوم بتجميع الأنماط باستخدام علامة Unicode. بالنسبة للعمل التحريري متعدد اللغات، قم بتأسيس حالات اختبار واضحة واختيار نمط يدعمه محرك المتصفح المستخدم.

خيارات الحالة موجودة في الأداة؛ حدود الكلمات التي تدرك Unicode لا تفعل ذلك

الكلمة بأكملها هي قاعدة تركيب، وليست محرك بديل ثانٍ. الوضع الحرفي يفلت من البحث؛ يحافظ عليه وضع regex؛ ثم نفس المجموعة غير الملتقطة وحدين يحيطان بأي من النتيجتين. يحمي هذا الترتيب علامات الترقيم الحرفية ويجعل بدائل التعبير العادي مثل `cat|dog` تتصرف كتعبير واحد محدد.

استخدم الخيار عندما تكون مصطلحات نمط ASCII المستقلة هي الأهداف المقصودة، ثم تعامل مع عدد الاستبدال وتراجع التحكم كإجراءات وقائية بدلاً من الزخرفة. افتح بحث واستبدال في ToolAcre، واختبر البديل مقابل كل من الأمثلة المستقلة والمضمنة، وقم بتطبيقه على المستند الكامل فقط بعد أن تتصرف هذه الأمثلة كما هو متوقع.