التقاط مجموعات عشوائية في JavaScript Regexp
عند استخدام مجموعات الالتقاط في تعبيرات JavaScript العادية، من الضروري فهم القيود. افتراضيًا، يتم الاحتفاظ فقط بالالتقاط الأخير لمجموعة متكررة، حتى لو كانت المجموعة متداخلة.
مثال: مجموعة الالتقاط المتداخلة
ضع في اعتبارك التعبير العادي التالي:
/^(\s*\w ) $/
الإخراج المتوقع:
["foo bar baz", "foo", " bar", " baz"]
الإخراج الفعلي:
["foo bar baz", " baz"]
في هذه الحالة، فقط عودة آخر مجموعة تم أسرها "باز". وذلك لأن جافا سكريبت يحتفظ فقط بالالتقاط النهائي لكل مجموعة متكررة.
خيارات لالتقاط مجموعات متعددة
للتغلب على هذا القيد، تتوفر عدة خيارات:
مثال: Exec Loop and Splitting
إليك مثال باستخدام حلقة exec لالتقاط وتقسيم مجموعة متداخلة: var text = "a;b;var text = "a;b;<c;d;e;f>;g;h;i;<no no no>;j;k;<xx;yy;zz>"; var r = /<(\w (;\w )*)>/g; var match; while ((match = r.exec(text)) != null) { print(match[1].split(";")); } // Output: // ["c", "d", "e", "f"] // ["xx", "yy", "zz"]في هذا المثال، يتم التقاط المجموعة المتداخلة كمجموعة 1، والتي يتم بعد ذلك تقسيمها على الفاصلة المنقوطة.
الأسئلة ذات الصلة
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3