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

سؤال في Regular Expressions

بدأه COMFORT في 10 نوفمبر 2011 · 7 رد · 784 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

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

لدي سؤال في الـ Regular Expressions

أنا لم أستعملها كثيراً لذلك ليست لدي الكثير من الخبرة في التعامل معها

أنا أقوم بتصميم برنامج يحلل بعص التعليمات و هذه التعليمات خاصة ببرمجة الماكينات الـ CNC

المهم أن كل تعليمة لها شكل معين و أنا أود أن أتحقق من هذه الشكل أو التنسيق

على سبيل المثال هذا كود للتوضيح فقط

G00 X5 Y6

سيجعل الحد القاطع للماكينة يتحرك إلى الإحداثيات (6,5) أي س = 5 و ص = 6

هذا المثال يتكون من سطر واحد و السطر الواحد في هذه البرمجة يسمى Block

يتم تنفيذ البرنامج الكامل سطراً تلو الآخر.

قمت بتصميم برنامج و استطعت قرأة السطور و التحقق من الأوامر و البرنامج يعمل

وفق خطة معينة ليست هناك مشاكل .. المشكلة التي تواجهني هي كالآتي:

بعد أن أتعرف على الآمر .. أود أن أتحقق من كونه مكتوب بشكل صحيح و أردت أن أستخدم

الـ Regular Expressions و هنا واجهتني المشكلة

حيث أن الأمر السابق لا يشترط فيه الترتيب يعني أنه يمكن كتابته

G00 Y6 X5

أيضاً يمكن كتابة أحد المحاور دون ذكر الآخر .. يمكن ذكر واحد و لكن لايمكن اهمال الأثنين

أعني بمثال أنه يمكن كتابة الأمر في الشكل التالي:

G00 X4
Or
G00 Y3

لا يلزم ذكر الأثنين معاً و لكن لا يمكن عدم كتابتهما معاً

طيب! الآن سوف أعرض عليكم التعابير التي استخدمتها لتحقيق ذلك

كخطوة أولى جربت التعرف على الأمر نفسه و هو الـ G-Code حيث أنه يوجد

G00,G01,G02,.. و هكذا .. استخدمت التعبير التالي:

^\b[gG]\d{2}\b$

و هذا نجح بالفعل أضفت له جزء آخر ليصبح:

^\b[gG]\d{2}\b\s\b[xX]\d+\b$

و هنا بدأت المشكلة حيث أني عندما أكتب مسافة بعد X نتيجة التطابق

تكون إيجابية و يقبل التكرار أيضاً يعني

G00 X5 X6

تكون مقبولة و هذا غير سليم ..

كل ما أريده تعبير يتحقق من شكل الأمر

G[Number]   [X] [Y]

حيث ترتيب الاحداثيات ليس ضروري و لا يمكن تكرار الاحداثي مرتين في السطر الواحد

و لا يمكن اهمالهما معاً أرجو المساعة و جزاكم الله خيراً

مواضيع و دروس
الكتابة بعدة ألوان داخل الــ TetxBoxمكتبة الأكوادتحميل الــ Visual Basic Express 2005
تحميل فيجوال بسيك 6أكواد × أكواددروس في الخوارزميات
لتحميل عدة إصدارات من كريستال ريبورتتحميل برنامج Activ Skin 4.3جمل الــ Sql من الألف إلى الياء
معظم المواقع المختصة بالفيجوال بيسيكموقع كويس للأيقوناتمرجع شامل لأدوات ActivX
كيفية نطق الحرف المكتوب شرح عن كيفية إقامة علاقة مع Data Reprot باستخدام الــ DataEnvironment علاقة مع الـ Datareport بدون استخدام DataEnvironment (( شرح ))
كتاب Migrating From DAO to ADOإضافة لـ VB6 بريمج IndenterVB, إضافة لبيئة تطوير فيجوال بيسك 6حوار بينى و بين عضو حول ال winsock , اتمنى ان يعجبكم
Smart Indenter 3.5 لتنسيق الأكواد, هديه لكل الأعضاء السلسلة الدهبية في المواضيع العلمية ، إستغلال الـ Balloons في الـ Windows XP مصفوفات الأدوات Control Arrays افكار وتلميحات ! , لمن افتقدها من أيام الـ VB6.0
جعل خلفية الـ Mid Form تظهر بالكامل خواص الاداة Winsock لربط الاجهزة عن طريق الانترنتكيف يتم عمل تقارير بإستخدام HTML

7.gif
#2

السلام عليكم ورحمه الله وبركاته

اخي جرب العبارة التاليه

^G\d{2}\s+((X\d+\s+Y\d+)|(Y\d+\s+X\d+))$
1

.:: Wish to become better and better ::.

#3

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

جزاك الله خيراً أخي VBHelper

جربت التعبير الذي كتبته لي و هو يعمل جيداً فيما عدا شيء واحد

و هو أنه لا يشترط أن يتم ذكر الإحداثيين (X,Y) معاً .. و في نفس الوقت

لا يمكن أن يتم إهمالهما معاً. يعني

G00 X5 Or G00 Y6

و هذا صحيح .. هذا فقط المتبقي.

ملاحظة أضفت شيء بسيط إلى تعبيرك ليصبح

^[Gg]\d{2}\s+(([Xx]\d+\s+[Yy]\d+)|([Yy]\d+\s+[Xx]\d+))$

و ذلك ليتم تجاهل حالة الأحرف لكي لا يكون Case Sensitive.

مرة أخرى جزاك الله خيراً على المساعدة

تم تعديل هذه المشاركة بواسطة COMFORT في 12 نوفمبر 2011 في 15:25

مواضيع و دروس
الكتابة بعدة ألوان داخل الــ TetxBoxمكتبة الأكوادتحميل الــ Visual Basic Express 2005
تحميل فيجوال بسيك 6أكواد × أكواددروس في الخوارزميات
لتحميل عدة إصدارات من كريستال ريبورتتحميل برنامج Activ Skin 4.3جمل الــ Sql من الألف إلى الياء
معظم المواقع المختصة بالفيجوال بيسيكموقع كويس للأيقوناتمرجع شامل لأدوات ActivX
كيفية نطق الحرف المكتوب شرح عن كيفية إقامة علاقة مع Data Reprot باستخدام الــ DataEnvironment علاقة مع الـ Datareport بدون استخدام DataEnvironment (( شرح ))
كتاب Migrating From DAO to ADOإضافة لـ VB6 بريمج IndenterVB, إضافة لبيئة تطوير فيجوال بيسك 6حوار بينى و بين عضو حول ال winsock , اتمنى ان يعجبكم
Smart Indenter 3.5 لتنسيق الأكواد, هديه لكل الأعضاء السلسلة الدهبية في المواضيع العلمية ، إستغلال الـ Balloons في الـ Windows XP مصفوفات الأدوات Control Arrays افكار وتلميحات ! , لمن افتقدها من أيام الـ VB6.0
جعل خلفية الـ Mid Form تظهر بالكامل خواص الاداة Winsock لربط الاجهزة عن طريق الانترنتكيف يتم عمل تقارير بإستخدام HTML

7.gif
#4

السلام عليكم ورحمه الله وبركاته

اقتباس

لا يلزم ذكر الأثنين معاً و لكن لا يمكن عدم كتابتهما معاً

على حسب طلبك ثم وضع العبارة السابقة!!

.:: Wish to become better and better ::.

#5

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

اقتباس
على حسب طلبك ثم وضع العبارة السابقة!!

هذا مبين في المشاركة الأصلية أستاذي الفاضل

لعلك لم تلاحظها سهواً

COMFORT كتب:

بعد أن أتعرف على الآمر .. أود أن أتحقق من كونه مكتوب بشكل صحيح و أردت أن أستخدم

الـ Regular Expressions و هنا واجهتني المشكلة

حيث أن الأمر السابق لا يشترط فيه الترتيب يعني أنه يمكن كتابته

G00 Y6 X5

أيضاً يمكن كتابة أحد المحاور دون ذكر الآخر .. يمكن ذكر واحد و لكن لايمكن اهمال الأثنين

أعني بمثال أنه يمكن كتابة الأمر في الشكل التالي:

G00 X4
Or
G00 Y3

لا يلزم ذكر الأثنين معاً و لكن لا يمكن عدم كتابتهما معاً

مواضيع و دروس
الكتابة بعدة ألوان داخل الــ TetxBoxمكتبة الأكوادتحميل الــ Visual Basic Express 2005
تحميل فيجوال بسيك 6أكواد × أكواددروس في الخوارزميات
لتحميل عدة إصدارات من كريستال ريبورتتحميل برنامج Activ Skin 4.3جمل الــ Sql من الألف إلى الياء
معظم المواقع المختصة بالفيجوال بيسيكموقع كويس للأيقوناتمرجع شامل لأدوات ActivX
كيفية نطق الحرف المكتوب شرح عن كيفية إقامة علاقة مع Data Reprot باستخدام الــ DataEnvironment علاقة مع الـ Datareport بدون استخدام DataEnvironment (( شرح ))
كتاب Migrating From DAO to ADOإضافة لـ VB6 بريمج IndenterVB, إضافة لبيئة تطوير فيجوال بيسك 6حوار بينى و بين عضو حول ال winsock , اتمنى ان يعجبكم
Smart Indenter 3.5 لتنسيق الأكواد, هديه لكل الأعضاء السلسلة الدهبية في المواضيع العلمية ، إستغلال الـ Balloons في الـ Windows XP مصفوفات الأدوات Control Arrays افكار وتلميحات ! , لمن افتقدها من أيام الـ VB6.0
جعل خلفية الـ Mid Form تظهر بالكامل خواص الاداة Winsock لربط الاجهزة عن طريق الانترنتكيف يتم عمل تقارير بإستخدام HTML

7.gif
#6

UP

تم تعديل هذه المشاركة بواسطة COMFORT في 14 نوفمبر 2011 في 23:23

مواضيع و دروس
الكتابة بعدة ألوان داخل الــ TetxBoxمكتبة الأكوادتحميل الــ Visual Basic Express 2005
تحميل فيجوال بسيك 6أكواد × أكواددروس في الخوارزميات
لتحميل عدة إصدارات من كريستال ريبورتتحميل برنامج Activ Skin 4.3جمل الــ Sql من الألف إلى الياء
معظم المواقع المختصة بالفيجوال بيسيكموقع كويس للأيقوناتمرجع شامل لأدوات ActivX
كيفية نطق الحرف المكتوب شرح عن كيفية إقامة علاقة مع Data Reprot باستخدام الــ DataEnvironment علاقة مع الـ Datareport بدون استخدام DataEnvironment (( شرح ))
كتاب Migrating From DAO to ADOإضافة لـ VB6 بريمج IndenterVB, إضافة لبيئة تطوير فيجوال بيسك 6حوار بينى و بين عضو حول ال winsock , اتمنى ان يعجبكم
Smart Indenter 3.5 لتنسيق الأكواد, هديه لكل الأعضاء السلسلة الدهبية في المواضيع العلمية ، إستغلال الـ Balloons في الـ Windows XP مصفوفات الأدوات Control Arrays افكار وتلميحات ! , لمن افتقدها من أيام الـ VB6.0
جعل خلفية الـ Mid Form تظهر بالكامل خواص الاداة Winsock لربط الاجهزة عن طريق الانترنتكيف يتم عمل تقارير بإستخدام HTML

7.gif
#7

السلام عليكم ورحمه الله وبركاته

اخي جرب العبارة التاليه

^[Gg]\d{2}\s+(([Xx]\d+\s+[Yy]\d+)|([Yy]\d+\s+[Xx]\d+)|([Xx]\d+)|([Yy]\d+))$
1

.:: Wish to become better and better ::.

#8

جزاك الله خيراً أخي VB Helper

التعبير يعمل جيداً كما هو مطلوب.

جزاك الله كل خير

مواضيع و دروس
الكتابة بعدة ألوان داخل الــ TetxBoxمكتبة الأكوادتحميل الــ Visual Basic Express 2005
تحميل فيجوال بسيك 6أكواد × أكواددروس في الخوارزميات
لتحميل عدة إصدارات من كريستال ريبورتتحميل برنامج Activ Skin 4.3جمل الــ Sql من الألف إلى الياء
معظم المواقع المختصة بالفيجوال بيسيكموقع كويس للأيقوناتمرجع شامل لأدوات ActivX
كيفية نطق الحرف المكتوب شرح عن كيفية إقامة علاقة مع Data Reprot باستخدام الــ DataEnvironment علاقة مع الـ Datareport بدون استخدام DataEnvironment (( شرح ))
كتاب Migrating From DAO to ADOإضافة لـ VB6 بريمج IndenterVB, إضافة لبيئة تطوير فيجوال بيسك 6حوار بينى و بين عضو حول ال winsock , اتمنى ان يعجبكم
Smart Indenter 3.5 لتنسيق الأكواد, هديه لكل الأعضاء السلسلة الدهبية في المواضيع العلمية ، إستغلال الـ Balloons في الـ Windows XP مصفوفات الأدوات Control Arrays افكار وتلميحات ! , لمن افتقدها من أيام الـ VB6.0
جعل خلفية الـ Mid Form تظهر بالكامل خواص الاداة Winsock لربط الاجهزة عن طريق الانترنتكيف يتم عمل تقارير بإستخدام HTML

7.gif

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