"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف يمكنني تحقيق تأكيدات البحث الخلفية ذات الطول المتغير في التعبيرات العادية؟

كيف يمكنني تحقيق تأكيدات البحث الخلفية ذات الطول المتغير في التعبيرات العادية؟

تم النشر بتاريخ 2024-11-07
تصفح:254

How Can I Achieve Variable-Length Lookbehind Assertions in Regular Expressions?

التأكيدات ذات الطول المتغير في التعبيرات العادية

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

بدائل تأكيدات البحث الخلفي ذات الطول المتغير

إذا كنت بحاجة إلى تنفيذ تأكيدات البحث الخلفي ذات الطول المتغير، فهناك هناك عدة بدائل:

  1. وحدة التعبير العادي في بايثون: تدعم وحدة التعبير العادي في بايثون تأكيدات البحث الخلفية ذات الطول المتغير باستخدام بناء الجملة (؟
  2. رمز التحكم\K: في التعبيرات العادية الحديثة، يسمح لك الرمز \K بتجاهل الأحرف من المطابقة قبل حدوث \K. يشبه هذا تأكيد البحث الخلفي، لكن لا يمكن استخدامه مرتين في نفس التعبير وتمتد الأحرف المهملة دائمًا إلى بداية السطر.

الاستبدال بـ \K

عند استبدال التطابقات، يمكنك استخدام \K لاستبعاد أحرف معينة من الاستبدال. على سبيل المثال، قد يحل ما يلي محل الجزء "الشريط" فقط من السلسلة:

s/(foo.*)\Kbar/new_text/

Negative Lookbehinds بـ \K

يمكن تحقيق المظهر الخلفي السلبي باستخدام البناء ^(?:(؟!STRING).)*. يطابق هذا بشكل فعال السلسلة بأكملها دون مطابقة أي سلسلة فرعية تحتوي على السلسلة المحددة.

تطبيقات التعبير العادي المحسنة

قامت بعض اللغات بتعزيز تطبيقات التعبير العادي التي تدعم الطول المتغير تأكيدات البحث وراء:

  • وحدة التعبير العادي في بايثون
  • بعض الإصدارات الموسعة من محرك التعبير العادي لبيرل
  • ومع ذلك ، من المهم ملاحظة أنه ليست كل تطبيقات التعبير العادي الحديثة تدعم تأكيدات البحث الخلفية ذات الطول المتغير. يُنصح دائمًا بمراجعة الوثائق الخاصة بلغتك المحددة وتنفيذها.
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3