"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > مقارنة الكفاءة بين \\ d و \ [0-9 \] أو \ [0123456789 \] في التعبيرات العادية

مقارنة الكفاءة بين \\ d و \ [0-9 \] أو \ [0123456789 \] في التعبيرات العادية

نشر في 2025-04-15
تصفح:618

Is \d Really Less Efficient Than [0-9] or [0123456789] in Regex?

\ d ليست فعالة مثل [0-9]

]

في المناقشات الحديثة ، شكك بعض الأشخاص في كفاءة استخدام [0123456789] بدلاً من [0-9] أو \ d في تعبيرات منتظمة. والمثير للدهشة أن الاختبار في محرك التعبير العادي C# أظهر أن \ d أقل كفاءة من الخيارين الآخرين.

الأسباب المحتملة لعدم الكفاءة

  1. أرقام Unicode: \ d تحتوي على جميع أرقام Unicode ، وليس فقط 0-9. لذلك ، قد يؤدي تحليل الأرقام غير القياسية إلى إبطاء محرك التعبير العادي.
  2. غير ضروري ميزات إضافية: \ d تحتوي على ميزات إضافية أخرى غير [0-9] ، والتي قد تتطلب معالجة أكثر تعقيدًا. يمكن أن تؤثر هذه الميزات الإضافية على الكفاءة.

اختبار نتائج

لإثبات هذه المشكلة ، تم إجراء الاختبارات التالية:

  • 10000 سلاسل عشوائية ، تحتوي كل منها على 1000 حرف ، نصفها يحتوي على أرقام.
  • الوقت الذي يقضيه معالجة سلاسل لكل تعبير منتظم ( \ d ، [0-9] ، ، [0123456789]
  • ):
]]] تعبير منتظم وقت النسبة المئوية للوقت بالنسبة إلى \ d ] 100 ٪ [0-9] 00: 00: 00.1357972 63.42 ٪ ] 00: 00: 00.1388997
\ d 00: 00: 00.2141226
]
[0123456789] ]
64.87 ٪

تظهر النتائج أن [0-9] و

[0123456789]

أفضل بكثير من \ d من حيث الكفاءة.

ختاماً بينما يمكن \ d توفير مجموعة واسعة من إمكانيات المطابقة الرقمية ، فقد ضحت بالأداء. للتطبيقات الناقدة للأداء ، يوصى باستخدام أبسط

[0-9]

أو Is \d Really Less Efficient Than [0-9] or [0123456789] in Regex?
[0123456789]

.

أحدث البرنامج التعليمي أكثر>

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

Copyright© 2022 湘ICP备2022001581号-3