أدوات النص واليومية · مجموعة أدوات النص
مجموعات التقاط Regex في البحث والاستبدال: إعادة ترتيب التواريخ باستخدام $1، $2، $3
· كيف يعمل
regex البحث والاستبدال بلح
يوضح كيف تلتقط الأقواس أجزاء من المطابقة وكيف يعيد $1 و$2 و$3 استخدامها في الاستبدال، باستخدام إعادة كتابة التاريخ الكلاسيكي ISO من يوم إلى شهر سنة وبعض عمليات إعادة الترتيب الأخرى.
أربعمائة تاريخ بترتيب خاطئ — لماذا يعد التحرير اليدوي 2024-01-02 إلى 02/01/2024 مهمة لمجموعات الالتقاط
يمكن أن تترك عملية تصدير جدول البيانات أربعمائة تاريخ بترتيب ISO على أساس سنة وشهر ويوم عندما تتوقع ورقة عمل المملكة المتحدة يومًا/month/year. يعد التحرير `2024-01-02` إلى `02/01/2024` يدويًا بطيئًا، ولكن الخطر الأكبر هو عدم الاتساق: يمكن أن يستمر صف واحد أو رقم منقول حتى يتم توزيع التقرير.
يمكن لبحث واستبدال التعامل مع كل تاريخ على أنه نفس ترتيب الأجزاء بدلاً من التعامل مع أربعمائة سلسلة غير مرتبطة. يحدد التعبير العادي السنة والشهر واليوم، بينما يقوم البديل بإعادة كتابة الأجزاء التي تم التقاطها بترتيب آخر. يتم إعادة استخدام الأرقام الأصلية، وبالتالي فإن العملية تغير البنية بدلاً من إعادة كتابة القيم.
ما الذي تلتقطه الأقواس — كيف تحصل كل مجموعة على رقم من اليسار إلى اليمين، وما هو التطابق بين \d{4} و\d{2}
تقوم الأقواس بإنشاء مجموعات الالتقاط. في `(\d{4})-(\d{2})-(\d{2})`، تلتقط المجموعة الأولى أربعة أرقام، والثانية تلتقط رقمين، والثالثة تلتقط رقمين. `\d` يعني رقمًا في هذا النمط JavaScript، بينما يحدد `{4}` و`{2}` العدد الدقيق للتكرارات المطلوبة داخل كل مجموعة.
تتلقى المجموعات أرقامًا من كل قوس مفتوح بينما يقرأ المحرك من اليسار إلى اليمين. بالنسبة إلى `2024-01-02`، المجموعة 1 هي `2024`، المجموعة 2 هي `01`، والمجموعة 3 هي `02`؛ تتطابق الواصلات مع الفواصل ولكنها تقع خارج الأقواس، لذلك لا يتم الاحتفاظ بها كقيم ملتقطة.
استخدام $1 و$2 و$3 في الاستبدال - إعادة بناء التطابق بترتيب جديد باستخدام فواصل جديدة
يطلب البديل `$3/$2/$1` من JavaScript إدراج الالتقاط الثالث، والشرطة المائلة، والالتقاط الثاني، والشرطة المائلة الأخرى، والالتقاط الأول. وبالتطبيق على المثال، تنتج هذه المراجع `02/01/2024`. مراجع الدولار هي تعليمات استبدال، وليست نصًا يجب أن يظهر أيضًا في التاريخ المطابق.
يقوم ToolAcre بتمرير سلسلة الاستبدال إلى عملية استبدال السلسلة القياسية JavaScript. مصدرها يدعم بشكل صريح المراجع المرقمة مثل `$1`، `$2` و `$3`، ويتم تجميع نمط البحث عالميًا. هذه العلامة العالمية هي سبب إعادة كتابة كل تاريخ مطابق في عملية واحدة بدلاً من المطابقة الأولى فقط.
مثال عملي - (\d{4})-(\d{2})-(\d{2}) تم استبداله بـ $3/$2/$1, ثم التحقق من عدد الاستبدال مقابل عدد الصفوف
الصق العمود الذي تم تصديره، وقم بتشغيل Regex، وأدخل `(\d{4})-(\d{2})-(\d{2})` في بحث، وأدخل `$3/$2/$1` في استبدال. يؤدي تحديد استبدال الكل أولاً إلى حساب المطابقات ثم إعادة كتابتها، وبالتالي فإن النتيجة تشير إلى عدد السلاسل ذات شكل التاريخ التي تم تغييرها عبر النص الملصق بالكامل.
قارن هذا الرقم بعدد الصفوف المتوقع قبل نسخ النتيجة مرة أخرى إلى جدول البيانات. يشير العدد الأقل إلى الفراغات أو التواريخ بتنسيق آخر؛ العدد الأعلى يعني أن النص المشابه في مكان آخر متطابق أيضًا. لا تحتوي الأداة على معاينة بديلة، لذا استخدم إجراء التراجع الخاص بها إذا كشف العدد أو الإخراج عن نمط واسع النطاق.
المزيد من عمليات إعادة الترتيب — "اللقب، الاسم الأول" إلى "الاسم الأول، اللقب"، وتبديل أعمدة القائمة المكونة من عمودين
يمكن لنفس المبدأ تغيير `Surname, Forename` إلى `Forename Surname` عندما يحتوي كل سطر بشكل موثوق على فاصلة واحدة: ابحث عن `([^,]+), ([^\r\n]+)` واستبدله بـ `$2 $1`. هنا تقوم كل مجموعة بالتقاط النص على جانب واحد من الفاصل المعروف، بدلاً من افتراض عدد ثابت من الأرقام.
لا تعد المبادلة المكونة من عمودين عملية جدول مضمنة، على الرغم من صياغة المخطط التفصيلي الواسع. إنه يعمل فقط عندما يحتوي النص الملصق على محدد يمكن الاعتماد عليه ويصف النمط حدود الأسطر بأمان. تتطلب الفواصل الموجودة داخل الأسماء، أو الحقول المفقودة، أو علامات التبويب غير المتناسقة، تنظيفًا أو نمطًا أكثر دقة قبل أن يصبح أي استبدال مجمع جديرًا بالثقة.
تعمل المزيد من عمليات إعادة الترتيب فقط عندما يكون الإدخال يحتوي على فاصل يمكن الاعتماد عليه
النقطة في النمط تعني تقريبًا أي حرف، لذا فإن نمط التاريخ المكتوب بالشكل `(\d{4}).(\d{2}).(\d{2})` يقبل أيضًا الخطوط المائلة أو المسافات أو الأحرف بين الحقول. يمكنك الهروب من النقطة الحرفية مثل `\.` والهروب من الأحرف الأولية الأخرى عندما يجب أن تتطابق مع نفسها. يتم الإعلام عن قوس غير صالح أو قوس غير مكتمل دون تغيير النص.
يبدأ ترقيم المجموعة عند 1، وليس 0. علامات الدولار لها أيضًا معنى بديل خاص: `$&` يُدرج التطابق بالكامل و`$$` يُنتج علامة دولار واحدة حرفيًا. ينطبق هذا السلوك حتى عندما يكون وضع التعبير العادي متوقفًا عن التشغيل لأن ToolAcre يفلت من جانب البحث فقط؛ ولا يفلت من سلسلة الاستبدال قبل أن يقوم JavaScript بمعالجتها.
ما لا يغطيه هذا — المجموعات المسماة، والنظر في الخلف، وأسماء الأشهر التي تحتاج إلى جدول بحث
يمكن للمجموعات المرقمة إعادة ترتيب النص الموجود بالفعل في المباراة، لكن لا يمكنها ترجمة `Jan` إلى `01` لأن ذلك يتطلب البحث بدلاً من إعادة الترتيب. لا تعتمد هذه المقالة أيضًا على المجموعات المسماة أو lookbehind، التي تتضمن فائدتها ودعم المتصفح لها مجموعة مختلفة من الاختيارات عن عملية تنظيف التصدير البسيطة هذه.
يتحقق تعبير التاريخ من الشكل، وليس من صحة التقويم. سوف يطابق `2024-99-88` لأن رقمين يرضيان كل مجموعة أصغر. التحقق من صحة التواريخ في جدول البيانات أو النظام المصدر عندما تكون الصحة مهمة. يعد البحث والاستبدال مناسبًا للتنسيق المتسق، وليس لإثبات صلاحية كل شهر ويوم تم التقاطهما.
الفكرة الأساسية — نمط واحد، واستبدال واحد، ويتم إصلاح كل صف مرة واحدة في مجموعة أدوات النص، مع إمكانية التراجع إذا لم تكن النتيجة كما توقعت
تقوم مجموعات الالتقاط بتحويل سلسلة واحدة متطابقة إلى قطع قابلة لإعادة الاستخدام. بالنسبة لعمود التاريخ الموحد، تحتفظ ثلاث مجموعات بالسنة والشهر واليوم الأصلي بينما تقوم `$3/$2/$1` بوضعها بترتيب المملكة المتحدة. يعالج البحث الشامل جميع التطابقات، ويوفر العدد المبلغ عنه فحصًا فوريًا لعدد الصفوف التي تنوي تغييرها.
اجعل سير العمل قابلاً للمراجعة: احتفظ بنسخة من التصدير، واستخدم النمط الأضيق الذي يناسبه، وقارن العدد، وافحص العديد من النتائج، وقم بالتراجع عندما لا يتفق الدليل مع توقعاتك. يمكن لاستبدال واحد جيد النطاق أن يزيل التحرير المتكرر دون التظاهر بأن كل قيمة على شكل رقم هي تاريخ صالح تلقائيًا.