السلام عليكم ورحمة الله وبركاته،
ليكن لدي المحتوى التالي:
98.00e-500 + 98.E56
f = 98.300e-500
98.E+56
98.
98.E-5
98.3e-5
98.3e+5
98.3E567
98.3e5
98.E56
0.3E55
0.3e1
0.3e+1
.3e50
.3e+5
.030E-50
-------------
00.E56
08.E56
98.3e088
98.23e
98.23+5
.e50
.e
.-50
.8e08
والمطلوب أن أحصل بعد تنفيذ regexp على كل الأرقام الحقيقية التي تعلو السطر المنقط (فقط - نفترض أن جميع الأرقام التي تعلوه صحيحة وجميع الأرقام التي أسفله خاطئة كتمثيل)
هذا هو الـ Expression الذي كتبته
(^[1-9]+[0-9]*\.[0-9]*|^0\.[0-9]*|^\.[0-9]+)([eE][+\-]?[0-9]+)?
والذي أحصل بنتيجته على
Match Number Match Text Group 1 Group 2 0 "98.00e-500" "98.00" "e-500" 1 "98.E+56" "98." "E+56" 2 "98." "98." "" 3 "98.E-5" "98." "E-5" 4 "98.3e-5" "98.3" "e-5" 5 "98.3e+5" "98.3" "e+5" 6 "98.3E567" "98.3" "E567" 7 "98.3e5" "98.3" "e5" 8 "98.E56" "98." "E56" 9 "0.3E55" "0.3" "E55" 10 "0.3e1" "0.3" "e1" 11 "0.3e+1" "0.3" "e+1" 12 ".3e50" ".3" "e50" 13 ".3e+5" ".3" "e+5" 14 ".030E-50" ".030" "E-50" 15 "98.3e088" "98.3" "e088" 16 "98.23" "98.23" "" 17 "98.23" "98.23" "" 18 ".8e08" ".8" "e08"
ولو قمت بتغييره بشكل طفيف جداً
([1-9]+[0-9]*\.[0-9]*|^0\.[0-9]*|^\.[0-9]+)([eE][+\-]?[0-9]+)?
أحصل بنتيجته على
Match Number Match Text Group 1 Group 2 0 "98.00e-500" "98.00" "e-500" 1 "98.E56" "98." "E56" 2 "98.300e-500" "98.300" "e-500" 3 "98.E+56" "98." "E+56" 4 "98." "98." "" 5 "98.E-5" "98." "E-5" 6 "98.3e-5" "98.3" "e-5" 7 "98.3e+5" "98.3" "e+5" 8 "98.3E567" "98.3" "E567" 9 "98.3e5" "98.3" "e5" 10 "98.E56" "98." "E56" 11 "0.3E55" "0.3" "E55" 12 "0.3e1" "0.3" "e1" 13 "0.3e+1" "0.3" "e+1" 14 ".3e50" ".3" "e50" 15 ".3e+5" ".3" "e+5" 16 ".030E-50" ".030" "E-50" 17 "8.E56" "8." "E56" 18 "98.3e088" "98.3" "e088" 19 "98.23" "98.23" "" 20 "98.23" "98.23" "" 21 ".8e08" ".8" "e08"
وهذا أراه أفضل من السابق لكنه يحتاج إلى فلترة بعض الأرقام التي يتم أخذها من أسفل السطر.
طبعاً الأخطاء التي أنا فيها أستطيع أن أحددها لكن المشكلة أني لم أستطع جعل التعبير عام (وهو ليس بشرط أي أنه بإمكاني تقسيمه إلى عدة Expressions لو أردت)
هل أجد مساعدة..
مع الشكر سلفاً.