الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

سؤال: عن التعبير المنتظم Regular Expression

بدأه الساحر 89 في 30 أغسطس 2011 · 7 رد · 1,017 مشاهدة · في هندسة البرمجيات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

اكتب التعبير المنتظم Regular Expression الذي يصف

1- كتابته التاريخ ذو الصيغه dd/mm/yy

2- كتابته الوقت ذو الصيغه hh:mm:ss am|pm

1
#2

وضح أكثر أخي الكريم ماذا تقصد ؟

.............. بسم الله الرحمن الرحيم ...............ز

"فمن إتبع هداي فلا يضل ولا يشقي " صدق الله العظيم

ماض في الطريق إلي .... C++

#3

1- كتابته التاريخ ذو الصيغه dd/mm/yy

(0?[1-9]|[1-2][0-9]|3[01])/([1-9]|0[1-9]|1[12])/((19|20)?[0-9][0-9])

التعبير السابق سيعيد اى من التاليين:

3/07/2012
7/7/1985
12/11/1970
06/05/85
1/12/00

2- كتابته الوقت ذو الصيغه hh:mm:ss am|pm

(0?[1-9]|1[0-2]):(0?[0-9]|[1-5][0-9]):(0?[0-9]|[1-5][0-9])\s*[AaPp][Mm]

التعبير السابق سيعيد اى من التاليين:

12:3:17 PM
8:8:7 aM
3:14:15 Am
07:06:55 pM
1:1:1 am

و الله ولي التوفيق

تم تعديل هذه المشاركة بواسطة محمد علاء الدين في 31 أغسطس 2011 في 21:57

مدونتي: C++ Tips and Tricks

#4

حسب خبرتي البسيطة في Regular Expression شوف هذا الحل ان شاء الله يكون حسب المطلوب

:)

1- كتابته التاريخ ذو الصيغه dd/mm/yy

^([0-9]{1,2})/([0-9]{1,2})/([0-9]{4})$

2- كتابته الوقت ذو الصيغه hh:mm:ss am|pm

^([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})\|(AM|am|PM|pm)$

في مشكلة بسيطة في المدى يعني مثلا الشهر هو 31 يوم , اذا ادخل شخص 40 راح يحسبها صح

حاولت فيها بس ما زبطت معي ومش عارف اذا في الـ Regex صيغة معينة عشان تضبط المدى للارقام !!

لكن بلغة البرمجة ممكن تحل هذه المشكلة بسهولة ^_^

تم تعديل هذه المشاركة بواسطة M.B.O في 30 أغسطس 2011 في 22:59

1

M.B.O

Mohamed Bin Othman

إبن المكلا

يابني البشر ماذا فعلتم بالبشر !!

إسـألـنـي

#5
اقتباس

في مشكلة بسيطة في المدى يعني مثلا الشهر هو 31 يوم , اذا ادخل شخص 40 راح يحسبها صح

حاولت فيها بس ما زبطت معي ومش عارف اذا في الـ Regex صيغة معينة عشان تضبط المدى للارقام !!

اليوم و الشهر بهم نفس المشكله، الحل هو ان تتعامل مع على مستوى الخانات و بالتالي خانة اليوم ممكن ان تأخذ أى من الأشكال التاليه: 9 - 09 - 12 و بالتالي عندما يكون اليوم اقل من 10 يمكن استخدام التعبير التالي:

0?[1-9]

إذا كان اليوم فى المدى من 10 إلى 29 يمكن استخدام التعبير التالي:

[1-2][0-9]

يتبقي الأيام 30 و 31

3[01]

عند دمج الحالات معا:

(0?[1-9]|[1-2][0-9]|3[01])

التعبير السابق يطابق رقم اليوم من 1-9 او 01-09 او 10-31 فقط.

و الله ولي التوفيق

مدونتي: C++ Tips and Tricks

#6
اقتباس
اليوم و الشهر بهم نفس المشكله، الحل هو ان تتعامل مع على مستوى الخانات و بالتالي خانة اليوم ممكن ان تأخذ أى من الأشكال التاليه: 9 - 09 - 12 و بالتالي عندما يكون اليوم اقل من 10 يمكن استخدام التعبير التالي:

سويت نفس الطريقة لكن شفتها طريقة مطولة شوية بالغة البرمجة ممكن تحل هذه المشكلة بسهولة

اخي محمد علاء الباترن الذي وضعته صحيح لكن فيه بعض الاخطاء

لو وضعت حرف في بداية اليوم وكذلك حرف في نهاية السنة راح يحتسبها صحيح ينقصه هذين الرمزين ( $^ ) وراح يكون تمام

يعني بالشكل النهاي سوف يكون كذا

^(0?[1-9]|[1-2][0-9]|3[01])/([1-9]|0[1-9]|1[12])/((1?9|2?0)?[0-9][0-9])$

كذلك باترن الوقت كذا بيكون افضل

^(0?[1-9]|1[0-2]):(0?[0-9]|[1-5][0-9]):(0?[0-9]|[1-5][0-9])\s*[AaPp][Mm]$

اتمنى التوفيق للجميع ^__^

M.B.O

Mohamed Bin Othman

إبن المكلا

يابني البشر ماذا فعلتم بالبشر !!

إسـألـنـي

#7
اقتباس

اخي محمد علاء الباترن الذي وضعته صحيح لكن فيه بعض الاخطاء

لو وضعت حرف في بداية اليوم وكذلك حرف في نهاية السنة راح يحتسبها صحيح

لو استخدمت الباترن مع نص يحتوى على عدة تواريخ او اوقات سيعيدها لك فقط، اما بإستخدام الـ Line Markers فهذا يعنى ان القيمه المدخله اما تحتوى على تاريخ او لا و هذا يحدد كثيرا من عملية الإستخدام.

و الله ولي التوفيق

1

مدونتي: C++ Tips and Tricks

#8

السلام عليكم ورحمة الله

كل عام وانتم بخير

الجزء اخي MBO الدال على السنة في التاريخ

((1?9|2?0)?[0-9][0-9])

سيشمل ادخالات لا اعتقد انها مرحب بها

مثل

000..099

900..999

وارى الاولى استخدام صيغة مثل

((?:19|20)?[0-9]{2})

اما بالنسبة لتحديد بداية ونهاية الـ Matching فانا مع رأي اخونا محمد علاء الدين لان كما قما قال سيكون استخدامها بدون التحديد موسعاً واذا دعت الضرورة لها فمعظم ما واجهت من لغات تمكنك من اختيار Global Matching أو العكس

تحياتي

تم تعديل هذه المشاركة بواسطة ihope في 31 أغسطس 2011 في 10:12

2

other ESTJ thing

اقتباس
Help Me To Help You

0xBAD00DAD.png

مواضيع مشابهة