\d+\.?\d*|\.\d+(?=\s*ch)
تم تطبيقه على "STA.23.5 .1 الكلمات 67.89 CH" يلتقط 23.5 أولاً لأنه يتطابق \d+\.?\d*
أو "|" له أعلى الأسبقية ، إذا كنت تريد التفكير في الأمر على هذا النحو ، تقسيم النمط إلى تطابقين محتملين: \d+\.?\d*
و \.\d+(?=\s*ch)
إذا كنت تريد منع \d+\.?d*
من مطابقة 23.5 ، يجب عليك إضافة معايير إضافية ، مثل طلب حرف فضاء قبل ذلك واستخدام أقواس التقاط للحصول على الرقم كخداع فرعي: \s(\d+\.?\d*)
يمكن أن تتطابق مع هذا النمط ، \s(\d+\.?\d*)|\.\d+(?=\s*ch)
, ، ولكن ضع في اعتبارك أنه إذا كانت النصف الأول مباريات ، فستنظر إلى الفتحات الخفية للقيمة الفعلية.
المشكلة الحقيقية هنا هي أن فئة regexp الخاصة بـ VBScript لا تدعم Lookbehind ، فقط Lookahead.