تقسيم سلسلة مع أقواس مجعد كحذف؟
-
05-07-2019 - |
سؤال
'{5}<blah>{0}</blah>'
أريد أن أحول ذلك إلى:
['{5}', '<blah>', '{0}', '</blah>']
أنا أستخدم حاليا: ________.split(/({.*?})/);
لكن هذا يفشل عندما يكون الدعامة المجعد هي الشخصية الأولى كما في الحالة:
'{0}<blah>'
الذي يتحول إلى:['', '{0}', '<blah>']
... صفيف العناصر المكون من 3 ، وليس 2
ما الخطأ في regex الخاص بي؟
شكرًا!
المحلول
لا حرج في regex ، ولكن هناك مشكلة في كيفية استخدامك للانقسام. يقوم Split بإرجاع صفيف يعتمد على محدد ، لذلك إذا كان المحدد أولاً ، فإنه يمنحك الأشياء إلى اليسار واليمين من العنصر المقسم.
فقط تحقق لمعرفة ما إذا كان العنصر الأول == '' وأزله إذا كان كذلك.
نصائح أخرى
هذا يجب أن يفعل ذلك:
split(/((?!^)\{.*?\})/)
Lookahead السلبي - (?!^)
- خلف IFF ، لا تبدأ المباراة في بداية السلسلة.
ما رأيك في:
'{5}<blah>{0}</blah>'.split(/{([^}]+)}/g)
قيمة الكتل المجعد هي كل عنصران من البند 1.
لا تنتمي إلى StackOverflow