هل تقدم بيرل 6 أي وعود حول استطلاعات الطلب سيتم استخدامها؟

StackOverflow https://stackoverflow.com/questions/766480

  •  12-09-2019
  •  | 
  •  

سؤال

إعطاء بديل مثل /(foo|foobar|foobaz)/ هل يقوم بيرل 6 بإجراء أي وعود حول أي من الثلاثة سيتم استخدامه أولا، وإذا كان ذلك في المكان الذي يجعله في الوثائق يجعل هذا الوعد؟

انظر السؤال ذي الصلة هل يحقق بيرل حاليا (5.8 و 5.10) أي وعود حول استطلاعات الطلب سيتم استخدامها؟.

هل كانت مفيدة؟

المحلول 2

S05. يقول

تحقيقا لهذه الغاية، يلزم كل regex في بيرل 6 أن تكون قادرا على التمييز بين أنماطها "النقية" من أفعالها، وإرجاع قائمة أنماط الرمز المميز الأولي (بما في ذلك أنماط رمزية على قيد الحياة لأي فرعية تسمى من قبل الجزء "النقي" هذا Regex، ولكن ليس بما في ذلك أي فرعية أكثر من مرة، لأن ذلك من شأنه أن ينطوي على مرجع الذات، غير مسموح به في التعبيرات العادية التقليدية). استيلاء منطقي باستخدام | ثم يأخذ اثنين أو أكثر من هذه القوائم وإرسالها إلى البديل الذي يطابق أطول بادئة رمزية. هذا قد يكون أو لا يكون البديل الذي يأتي أولا متعمدا.

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

يبدو أن هذا وعد مختلف تماما من واحد صنع في بيرل 5.

نصائح أخرى

لوضعها بضع كلمات فقط: يجب مطابقة البدائل (على الأقل من الأفراد) بالتوازي، وأطول مباراة تفوز. إذا كنت تريد استطلاعا متسلسلا، فيمكنك استخدام شريط مزدوج ||، والذي يعد بالطلب من اليسار إلى اليمين تماما مثل | يفعل في بيرل 5 regexes.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top