أنا أركض تولز.ديف وأقضي معظم أسبوعي في كود البرنامج المساعد WordPress، وواجهات برمجة تطبيقات Laravel، والواجهات الأمامية لـ React. البحث عن التعديل الفردي واستبداله، فأنا أقوم به أكثر من أي تعديل آخر، ومع ذلك لا أريد الإصدار القوي منه تسع مرات من أصل عشر. لا أريد تعبيرًا عاديًا. أريد أن آخذ جزءًا من النص، على سبيل المثال كل تكرار لاسم المنتج القديم للعميل '؛، وأستبدله بالنص الجديد، بالضبط، بدون حرف ضال في مصطلح البحث الخاص بي يطابق شيئًا لم أقصد لمسه أبدًا. هذا هو أداة البحث والاستبدال يفعل ذلك، وهذا الدليل يدور حول سبب كون النسخة الحرفية والمملة من البحث والاستبدال هي النسخة التي تريدها في معظم الأوقات.
ليرة تركية؛DR: تقوم هذه الأداة بالعثور والاستبدال حرفيًا على كتلة من النص الملصق. يتطابق مصطلح البحث تمامًا كما هو مكتوب، لذا فإن النقطة تتطابق مع النقطة وعلامة الدولار تتطابق مع علامة الدولار، دون أي هروب أو مطابقة زائدة عرضية. يمكنك إضافة العديد من قواعد البحث والاستبدال وتطبيقها في تمريرة واحدة، وتقييد التطابقات على الكلمات بأكملها، وتشغيل أو إيقاف حساسية الحالة. فهو يوضح عدد عمليات الاستبدال التي تم إجراؤها. كل شيء يعمل في متصفحك، لذلك لا يتم تحميل أي شيء تقوم بلصقه. عندما تحتاج حقًا إلى أحرف البدل ومجموعات الالتقاط، فإن بديل regex هو الأداة الصحيحة بدلاً من ذلك.
ما هو البحث والاستبدال الحرفي، ولماذا "؛ الحرفي والاقتباس؛ مهم؟
البحث والاستبدال هو عملية تحديد موقع كل تكرار لسلسلة واحدة واستبدالها بأخرى. كل محرر لديه ذلك. ما يختلف هو كيفية تفسير الأداة لمصطلح البحث الخاص بك، واختيار التصميم الفردي هذا هو ما إذا كانت الأداة تساعدك أم تدمر النص الخاص بك بهدوء.
هناك مدرستان. يتعامل بديل التعبير العادي مع مصطلح البحث الخاص بك كنمط، حيث تكون بعض الأحرف عبارة عن أوامر: نقطة تعني "؛ أي حرف، "؛ علامة النجمة تعني "؛ كرر، "؛ علامة الدولار تعني "؛ نهاية السطر، "؛ والأقواس والأقواس والخط المائل العكسي كلها تحمل معنى خاصًا. يعامل البديل الحرفي مصطلح البحث الخاص بك على أنه نفسه، حرفًا تلو الآخر، دون أي معنى خاص مرتبط بأي شيء.
في معظم الأحيان، الحرفي هو ما تريده، وهنا السبب الملموس. لنفترض أنك تريد استبدال سلسلة الإصدار 1.0.0 مع 2.0.0 في كتلة من النص. في أداة regex، تكون هذه النقاط عبارة عن أحرف بدل، لذا فإن بحثك متطابق أيضًا 1x0y0، 1a0b0، وغيرها من السلاسل التي لم تقصدها أبدًا. سيكون عليك الهروب من النقاط كما 1\.0\.0 لجعلها آمنة، وإذا نسيت، فإن الأداة تفعل شيئًا خاطئًا بمهارة ولا تحذرك. في أداة حرفية، 1.0.0 وسائل 1.0.0، النقاط هي نقاط، وليس هناك ما يهرب منه ولا شيء يخطئ. وينطبق الشيء نفسه على سعر مثل $9.99، مسار ملف به خطوط مائلة عكسية، أو مقتطف من التعليمات البرمجية به أقواس. تتعامل الأداة الحرفية مع كل هذه العناصر دون التفكير في بناء جملة النمط، لأنه لا يوجد بناء جملة للنمط.
متى يجب أن أستخدم بديل regex بدلاً من ذلك؟
الحرفي هو الافتراضي الصحيح، لكنه ليس الجواب الصحيح على كل شيء، وأفضل أن أخبرك أين يتوقف بدلاً من التظاهر بأنه لا يتوقف. الوصول إلى أ أداة استبدال Regex عندما يكون الشيء الذي تقوم بمطابقته عبارة عن شكل وليس سلسلة ثابتة. إذا كنت بحاجة إلى مطابقة كل سنة مكونة من أربعة أرقام، أو كل عنوان بريد إلكتروني، أو كل سطر يبدأ بتجزئة، أو كنت تريد إعادة تنسيق النص المطابق عن طريق سحب أجزاء منه باستخدام مجموعات الالتقاط، فهذا هو عمل النمط ولا يمكن للأداة الحرفية القيام بذلك. ال اختبار ريجكس هو المكان المناسب لإنشاء هذا النمط وتصحيح أخطائه قبل تشغيله.
الخط الفاصل بسيط. إذا كان بإمكانك كتابة ما تبحث عنه بالضبط، فاستخدم البحث الحرفي عن الهروب واستبداله وحفظه لنفسك. إذا كان ما تبحث عنه هو فئة من الأشياء التي تشترك في الشكل ولكن ليس الأحرف الدقيقة، فاستخدم regex. معظم عمليات تنظيف النص اليومية هي النوع الأول، ولهذا السبب تغطي الأداة الحرفية غالبية الوظائف الحقيقية وتغطي أداة regex الباقي.
| حالة | يستخدم | لماذا |
|---|---|---|
| إعادة تسمية كلمة أو عبارة ثابتة | البحث والاستبدال الحرفي | المصطلح دقيق؛ لا حاجة إلى نمط |
مصطلح بحث يحتوي على نقاط أو خطوط مائلة أو $ |
البحث والاستبدال الحرفي | لا مفر، لا توجد مباريات بدل عرضية |
| إصلاح عدة مصطلحات مختلفة دفعة واحدة | البحث والاستبدال الحرفي لقواعد متعددة | كل قاعدة دقيقة ويتم تطبيقها بالترتيب |
| تطابق أي سنة أو بريد إلكتروني أو شكل رمز | استبدال ريجكس | يمكن للنمط فقط وصف فئة ما |
| إعادة ترتيب أو إعادة تنسيق النص المطابق | استبدال ريجكس | التقاط المجموعات وسحب القطع وإعادة ترتيبها |
| المطابقة عند بداية السطر أو حدود الكلمات حسب القاعدة | استبدال ريجكس | المراسي والحدود هي ميزات النمط |
كيف تعمل القواعد المتعددة؟
الميزة التي أعتمد عليها أكثر هي تطبيق عدة قواعد في وقت واحد. نادرًا ما يكون التنظيف الحقيقي عبارة عن مبادلة واحدة. عندما أتولى مسؤولية نسخة العميل '؛s، قد أحتاج إلى تغيير اسم العلامة التجارية، وإصلاح خطأين إملائيين متسقين، وإزالة جزء من النموذج المعياري، كل ذلك في نفس كتلة النص. إن القيام بذلك كأربع تمريرات منفصلة أمر ممل وعرضة للخطأ. تتيح لك الأداة إضافة صف لكل زوج من أزواج البحث والاستبدال، وتطبقها بالترتيب، حيث تعمل كل قاعدة على إخراج الزوج الذي يسبقها.
وهذا الترتيب يستحق الفهم، لأنه ميزة وليس صدفة. قل القاعدة الأولى تحل محل foo مع barوالقاعدة الثانية تحل محل bar مع baz. لأن القاعدة الثانية تعمل على نتيجة القاعدة الأولى، النص الذي بدأ كـ foo ينتهي كما baz. في معظم الأحيان تكون قواعدك مستقلة ولا يهم الترتيب، ولكن عندما تتفاعل، يكون السلوك متوقعًا: من أعلى إلى أسفل، كل منها في النتيجة السابقة. تعرض لك الأداة أيضًا عددًا لكل قاعدة، حتى تتمكن من تأكيد أن القاعدة الثالثة تطابق شيئًا ما ولا تجلس هناك ولا تفعل شيئًا بسبب خطأ مطبعي في مصطلح البحث.
ماذا تفعل خيارات الكلمة والحالة بأكملها؟
هناك خياران يتعاملان مع الحالات التي يكون فيها المبادلة البسيطة صريحة للغاية.
حساسية الحالة تقرر ما إذا كان Cat، CAT، و cat هي نفس الكلمة أو ثلاثة مختلفة. يتم إيقاف تشغيله افتراضيًا، لأن معظم عمليات التنظيف تريد التقاط مصطلح بغض النظر عن كيفية كتابته بالأحرف الكبيرة. قم بتشغيله عندما تكون الكتابة بالأحرف الكبيرة هي بيت القصيد: عندما تريد تغيير تهجئة اسم دون لمس اسم آخر، أو عندما تعمل باستخدام التعليمات البرمجية حيث value و Value هي معرفات مختلفة.
تقرر مطابقة الكلمات الكاملة ما إذا كان يجب أن يقف مصطلح البحث الخاص بك بمفرده بدلاً من الجلوس داخل كلمة أطول. هذا هو الخيار الذي ينقذك من كارثة البحث والاستبدال الكلاسيكية. إذا قمت باستبدال cat مع dog بدون مطابقة الكلمات بأكملها، فإنك تتحول أيضًا category في dogegory و scatter في sdogter. مع مطابقة الكلمة بأكملها، فقط الكلمة المستقلة cat يتم استبداله وتترك الكلمات الأطول بمفردها. تكتشف الأداة حدود الكلمات باستخدام أحرف وأرقام Unicode بدلاً من تعريف ASCII فقط، لذا فإن الكلمة المميزة مثل café يتم التعامل معها ككلمة واحدة ويتم العثور على حدودها بشكل صحيح، وهو تطبيق ساذج باستخدام الكلاسيكية \b الحدود سوف تسوء.
هناك نقطة أوسع هنا حول كيفية احترام الأدوات النصية لـ Unicode، وهو ما أتناوله في دليل أدوات النص: التعامل مع النص على أنه بايت وليس كأحرف يدركها المستخدم هو المكان الذي يأتي منه عدد مذهل من أخطاء الأدوات.
كيف أستخدمه في العمل الحقيقي
تظهر بعض الأنماط مرارًا وتكرارًا. عندما أقوم بلصق نص من ملف PDF أو بريد إلكتروني، غالبًا ما يصل بمصطلح مكتوب بشكل غير متسق، وتقوم قاعدة حرفية واحدة بإصلاح كل مثيل. عندما أقوم بترحيل محتوى العميل '؛s، أقوم بإعداد مجموعة من القواعد لاسم العلامة التجارية والمجال القديم وبعض العبارات المتكررة وتشغيلها جميعًا مرة واحدة. عندما أقوم بتنظيف البيانات قبل استيرادها، أستخدم القواعد لتجريد بادئة متكررة أو حرف علامة طائشة، واستبدالها بلا شيء، وهي مجرد قاعدة مع بديل فارغ.
إنه يقترن بشكل طبيعي مع أدوات النص الأخرى. غالبًا ما أقوم بتسوية النص الملصق باستخدام إزالة فواصل الأسطر أولاً، قم بتشغيل البحث والاستبدال في النتيجة. عندما تكون المهمة في الواقع تتعلق بتغيير شكل الكلمات بدلاً من تبديلها، فإن محول القضية هو الأنسب، وعندما أقوم بإلغاء تكرار القائمة، فإنني أصل إلى مزيل الخط المكرر بدلاً من ذلك. إن معرفة الأداة التي تقوم بها المهمة هي نصف السرعة، وهناك ملخص أوسع لذلك في أدوات إنتاجية المطور مرشد.
آخر شيء، والسبب الذي دفعني إلى إنشاء هذه العناصر لتشغيلها في المتصفح، هو الخصوصية. غالبًا ما يكون النص الذي تلصقه في أداة البحث والاستبدال عبارة عن مسودة أو نسخة غير منشورة أو نسخة أو بيانات #39؛ ليس لديك أي عمل في تحميلها إلى خادم عشوائي. كل ما تفعله هذه الأداة يحدث في JavaScript على جهازك الخاص. لا يتم نقل أي شيء أو تسجيله أو تخزينه، ويمكنك تأكيد ذلك عن طريق قطع الاتصال بالشبكة ومشاهدة الأداة وهي تستمر في العمل.
مثال عملي: إعادة تسمية منتج عبر الصفحة
اسمحوا لي أن أجعل فكرة القواعد المتعددة ملموسة، لأنها الجزء الذي لا يستخدمه الناس بشكل كافٍ. قل أن العميل قد تم تغيير علامته التجارية من "؛QuickBooks Lite"؛ إلى "؛ ليدجرلي، "؛ انتقل من oldsite.com إلى ledgerly.app، واحتفظت نسختهم القديمة بالتهجئة "؛ البريد الإلكتروني والاقتباس؛ مع واصلة بينما يريد دليل النمط الجديد "؛email."؛ هذه ثلاثة تغييرات مستقلة، وأود أن أقوم بإعدادها كثلاث قواعد في تمريرة واحدة بدلاً من ثلاث رحلات عبر الأداة.
القاعدة التي يجدها المرء QuickBooks Lite ويستبدل بها Ledgerly. القاعدة الثانية تجد oldsite.com ويستبدل بها ledgerly.app؛ لاحظ أن النقاط في كلا المجالين حرفية هنا، لذلك لا يتعين علي الهروب من أي شيء، في حين أن أداة regex ستتعامل مع الأمر oldsite.com كمطابقة oldsiteXcom أيضاً. القاعدة الثالثة تجد e-mail ويستبدل بها email. ألصق الصفحة، وأقوم بتشغيل الثلاثة، ويخبرني العد بجوار كل قاعدة أن اسم العلامة التجارية تغير تسع مرات، وتغير المجال أربع مرات، وتم ضرب إصلاح الواصلة مرتين. إذا أظهرت القاعدة الثالثة صفرًا، فسأعلم أن النسخة لا تحتوي على التهجئة الموصولة ويمكنني إسقاط القاعدة.
التهم هي البطل الهادئ لسير العمل هذا. بدونهم أنت تثق في أن كل قاعدة قامت بعملها؛ معهم تحصل على تعليقات فورية تفيد بأن مصطلح البحث كان صحيحًا أو خاطئًا. الصفر الذي تتوقع فيه التطابقات هو دائمًا خطأ مطبعي في حقل البحث أو عدم تطابق في الأحرف الكبيرة يمكنك إصلاحه عن طريق تبديل حساسية الحالة.
كيف تعمل المطابقة؟
يجدر معرفة القليل عما يحدث تحت الغطاء، لأنه يشرح بعض السلوكيات التي قد تجدها مفاجئة. تقوم الأداة بمسح النص من اليسار إلى اليمين. في كل موضع، تتحقق مما إذا كان مصطلح البحث الخاص بك يتطابق مع البداية هناك. إذا حدث ذلك، وتم استيفاء أي شرط للكلمة بأكملها، فإنه يكتب الاستبدال ويقفز بعد النص المطابق. إذا لم يحدث ذلك، فإنه ينسخ حرفًا واحدًا ويتحرك واحدًا. ولهذا السبب لا يكون الاستبدال متكررًا ضمن قاعدة واحدة: عندما يكتب الاستبدال، فإنه يستمر في المسح بعده، وليس داخله، لذا يتم استبداله aa مع a في السلسلة aaa يعطيك aa بدلا من الانهيار على طول الطريق إلى a. إذا كنت تريد الانهيار، فقم بتشغيل القاعدة مرتين، وهو بالضبط ما تفعله القاعدة الثانية التي لها نفس البحث والاستبدال.
تتم المطابقة غير الحساسة لحالة الأحرف حرفًا تلو الآخر بدلاً من الغلاف السفلي للسلسلة بأكملها أولاً. يبدو هذا بمثابة تفاصيل تنفيذ، ولكنه مهم من أجل الصحة: بعض الأحرف تغير طولها عندما تكون ذات غلاف أقل، ومقارنة السلاسل ذات الغلاف السفلي بالكامل من شأنها أن تؤدي إلى إخراج المواضع من المحاذاة وإفساد الإخراج. إن مقارنة حرف واحد في كل مرة تجعل كل فهرس صادقًا. يتم التحقق من حدود الكلمات الكاملة مقابل الأحرف مباشرة قبل المباراة وبعدها، مع التعامل مع أي حرف أو رقم Unicode كجزء من الكلمة، وهو ما يتيح للنصوص المميزة وغير اللاتينية التصرف بالطريقة التي تتوقعها.
لا شيء من هذا شيء عليك التفكير فيه في الاستخدام اليومي. ولكن الفرق بين الأداة التي تفعل الشيء الخطأ بهدوء في حالة الحافة والأداة التي يمكنك الوثوق بها مع نسخة العميل '؛، وهذا هو السبب وراء تفضيلي استخدام بديل حرفي مصمم لهذا الغرض بدلاً من لصق النص في مربع regex وآمل ألا يحتوي مصطلح البحث الخاص بي على حرف خاص.
الأسئلة المتداولة
كيف يمكنني العثور على النص واستبداله دون استخدام regex؟
الصق النص الخاص بك في الأداة، واكتب العبارة بالضبط للعثور عليها والعبارة الدقيقة لاستبدالها، وقم بتشغيلها. البحث حرفي، بحيث تتم مطابقة كل حرف تكتبه على أنه نفسه ولا يحتاج أي شيء إلى الهروب. يتم تبديل كل حدث وتحصل على عدد التغييرات التي تم إجراؤها، كل ذلك في متصفحك دون تحميل أي شيء.
هل يمكنني استبدال عدة كلمات مختلفة في نفس الوقت؟
نعم. أضف صفًا لكل زوج من أزواج البحث والاستبدال، وتقوم الأداة بتطبيقهما بالتسلسل، حيث يعمل كل منهما على نتيجة القاعدة التي تسبقه. هذه هي الطريقة التي تعيد بها تسمية العلامة التجارية، وتصلح خطأين إملائيين، وتجرد قطعة من النموذج المعياري في تمريرة واحدة، وتظهر كل قاعدة عدد الاستبدال الخاص بها حتى تتمكن من رؤية مطابقتها.
ما الفرق بين هذا وأداة استبدال regex؟
تتطابق هذه الأداة مع مصطلح البحث الخاص بك حرفيًا، لذا فإن النقطة تتطابق فقط مع النقطة وعلامة الدولار فقط علامة الدولار، مع عدم وجود بناء جملة للنمط للتعلم وعدم وجود مطابقة زائدة عرضية. تتعامل أداة استبدال regex مع مصطلح البحث كنمط يحتوي على أحرف البدل والمثبتات ومجموعات الالتقاط، وهو ما تحتاجه لمطابقة فئة من الأشياء مثل أي عام أو أي عنوان بريد إلكتروني. استخدم الحرفي عندما يمكنك كتابة الشيء المحدد الذي تريده؛ استخدم regex عندما تقوم بمطابقة الشكل.
كيف تؤدي مطابقة الكلمات الكاملة إلى إيقاف عمليات الاستبدال غير المرغوب فيها؟
مع تشغيل مطابقة الكلمة بأكملها، يتم استبدال مصطلح البحث فقط عندما يقف بمفرده وليس داخل كلمة أطول. استبدال cat ثم يتغير cat لكن يترك category، scatter، و located لم يمس. تستخدم الأداة حدودًا مدركة لـ Unicode، لذلك يتم التعامل مع الكلمات المميزة وغير الإنجليزية بشكل صحيح بدلاً من تقسيمها في المكان الخطأ.
هل سيتم العثور على فواصل الأسطر أو المسافات واستبدالها؟
لا. يتم تغيير الأحرف التي بحثت عنها فقط. يتم ترك فواصل الأسطر والمسافات البادئة والمسافات وعلامات الترقيم حول التطابقات الخاصة بك كما كانت تمامًا. إذا كان الاستبدال أطول أو أقصر من النص الأصلي، فإن النص المحيط يتغير بشكل طبيعي، ولكن لا تتم إعادة تنسيق أو إعادة تدفق أي شيء آخر.
هل هناك حد لمقدار النص الذي يمكنني معالجته؟
لا يوجد حد ثابت يتجاوز ذاكرة المتصفح '؛s. نظرًا لأن العمل يحدث على جهازك بدلاً من الخادم، تتم معالجة الكتل المكونة من مئات الآلاف من الأحرف على الفور تقريبًا ولا يوجد حد أقصى لحجم التحميل. بالنسبة لشيء بحجم كتاب كامل، قد تلاحظ توقفًا مؤقتًا قصيرًا، لكن المستندات العادية تكون فورية بشكل فعال.
هل تم تحميل النص الخاص بي أو تخزينه في أي مكان؟
لا. تتم معالجة النص بواسطة JavaScript في متصفحك ولا يتم نقله أو تسجيله أو تخزينه مطلقًا. يمكنك التحقق من ذلك عن طريق فتح علامة تبويب الشبكة أثناء تشغيل بديل، أو عن طريق قطع الاتصال بالإنترنت، نظرًا لأن الأداة تستمر في العمل دون اتصال بالإنترنت بمجرد تحميل الصفحة. وهذا هو السبب وراء استخدام أداة من جانب العميل للمسودات ونسخ العميل وأي شيء خاص.



