• 0
OricalcosZy

مساعدة في Regular Expresions

سؤال

السلام عليكم

سؤالي هو أنني أريد وضع مربع نص يقبل فقط العبارة ax^3+bx²+dx+d

كما يمكن أت تقبل أيضا حالات أن الأعداد a و b و c و d منعدمة مثلا : x²+1

مع a و b و c و d أعداد موجبة أو سالبة أو بها فاصلة

هذه احدى محاوىتي الفاشلة

	Dim rx As New Regex("^f\(x\)(| )=(| )((((|\+|-)([0-9]{1,3}|[0-9]{1,3}\.[0-9]{1,5}))x(\^3|³))|)((((|\+|-)([0-9]{1,3}|[0-9]{1,3}\.[0-9]{1,5}))x(\^2|²))|)((((|\+|-)([0-9]{1,3}|[0-9]{1,3}\.[0-9]{1,5}))x)|)(((\+|\-).([0-9]{1,3})|([0-9]{1,3}\.[0-9]{1,4}))|)$")

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

19 إجابة على هذا السؤال .

  • 0

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

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

((-|+)?\d*x\^3)?((-|+)?\d*x\^2)?((-|+)?\d*x)?((-|+)?\d*)?

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شكرا على المبادرة أخي smile.gif

العبارة تظهر رسالة خطأ

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

اخي كانت المشكله في اشارة الموجب لأن ال + محجوزه لذا عدل الجملة على النحو التالي

^((-|\+)?\d*x\^3)?((-|\+)?\d*x\^2)?((-|\+)?\d*x)?((-|\+)?\d*)?$

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

لا زالت هناك مشكلة في الكود فهو لا يقبل مثلا :

-x^3-x²

ويقبل :

x^3+

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

اخي اصلا تركت مشكلة الاس لك, مو مشكلة جرب الكود التالي


Dim rx As New Regex("^((-|\+)?\d*x(\^3|³))?((-|\+)?\d*x(\^2|²))?((-|\+)?\d*x)?((-|\+)?\d+)?$")
Console.WriteLine(rx.IsMatch("-x^3-x²"))
Console.WriteLine(rx.IsMatch("x^3+"))

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

اخي اصلا تركت مشكلة الاس لك, مو مشكلة جرب الكود التالي


Dim rx As New Regex("^((-|\+)?\d*x(\^3|³))?((-|\+)?\d*x(\^2|²))?((-|\+)?\d*x)?((-|\+)?\d+)?{:content:}quot;)
Console.WriteLine(rx.IsMatch("-x^3-x²"))
Console.WriteLine(rx.IsMatch("x^3+"))

الكود التالي لا يقبل الفاصلة وقد حللت هذه المشكلة

بقيت مشكلة أخرى ; وهو أنه يقبل مثلا

x^3x²x1

عذرا على الازعاج sad.gif فقد بقيت اسبوعا كاملا أحاول معها ولم أفلح

لو أمكن أريد أن اعرف دور علامات الزائد والاستفهام

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

اخي جرب الكود التالي


Dim rx As New Regex("^((-|\+)\d*x(\^3|³))?((-|\+)\d*x(\^2|²))?((-|\+)\d*x)?((-|\+)\d+)?$")
Console.WriteLine(rx.IsMatch("-x^3-x²"))
Console.WriteLine(rx.IsMatch("x^3+"))
Console.WriteLine(rx.IsMatch("x^3x²x1"))

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

اخي جرب الكود التالي


Console.WriteLine(rx.IsMatch("-x^3-x²"))
Console.WriteLine(rx.IsMatch("x^3+"))
Console.WriteLine(rx.IsMatch("x^3x²x1"))
Console.WriteLine(rx.IsMatch("x²+x+1"))
    	Dim rx As New Regex("^((-|\+)?\d*x(\^3|³))?((-|\+)?\d*x(\^2|²))?((-|\+)?\d*x)?((-|\+)\d+)?$")

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

افترضت ان المطلوب قيم المعاملات a b c ...

جرب التالي

([^x]*)x(?:\^3|³)([^x]*)x(?:\^2|²)([^x]*)x([\+|-]\d)?

واستبدل x بـ w\ ان اردت استخدام اي متغيرات بخلاف x

والتالي لو ان الترتيب غير موثوق وايجاد الاسس للمعالجة لاحقا


مثل
<div>3x^2+5x^3+5</div><div>
</div>(?:([^x]*)x(\^3|³)|([^x]*)x(\^2|²)|([^x]*)(x)|([\+|-]\d))

تكون النتائج كالتالي

post-20735-096373500 1309827374_thumb.pn

واخبرنا بالنتائج

تم تعديل بواسطه ihope
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

بقي مشكل واحد أنه لا يقبل الأعداد وحدها مثلا : 7

(حالة a و b و c منعدمة)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

بقي مشكل واحد أنه لا يقبل الأعداد وحدها مثلا : 7

(حالة a و b و c منعدمة)

post-20735-046572800 1309875322_thumb.pn

وتستطيع استخدام الارقام الطبيعية فقط بدون متغير اكس

(?:([^x]*)x(\^3|³)|([^x]*)x(\^2|²)|([^x]*)(x)|([^\d]?\d))

جرب واخبرنا بالنتائج

تم تعديل بواسطه ihope
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

اخي هلى جربت الكود السابق؟!!

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

اخي هلى جربت الكود السابق؟!!

نعم جربته أخي الكريم وهو يعمل على أتم وجه فقط فقط أنه لا يقبل الأرقام وحدها

post-20735-046572800 1309875322_thumb.pn

وتستطيع استخدام الارقام الطبيعية فقط بدون متغير اكس

(?:([^x]*)x(\^3|³)|([^x]*)x(\^2|²)|([^x]*)(x)|([^\d]?\d))

جرب واخبرنا بالنتائج

أخي الكود ليس ملائما لمجموعة من العمليات التي سأقوم بها فيما بعد

عذرا huh.gif

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

اخي جرب الكود التالي


Dim rx As New Regex("^((-|\+)?\d*x(\^3|³))?((-|\+)?\d*x(\^2|²))?((-|\+)?\d*x)?((-|\+)?\d+)?$")
Console.WriteLine(rx.IsMatch("-x^3-x²"))
Console.WriteLine(rx.IsMatch("x^3+"))
Console.WriteLine(rx.IsMatch("x^3x²x1"))
Console.WriteLine(rx.IsMatch("x²+x+1"))
Console.WriteLine(rx.IsMatch("7"))

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

اخي جرب الكود التالي


Dim rx As New Regex("^((-|\+)?\d*x(\^3|³))?((-|\+)?\d*x(\^2|²))?((-|\+)?\d*x)?((-|\+)?\d+)?{:content:}quot;)
Console.WriteLine(rx.IsMatch("-x^3-x²"))
Console.WriteLine(rx.IsMatch("x^3+"))
Console.WriteLine(rx.IsMatch("x^3x²x1"))
Console.WriteLine(rx.IsMatch("x²+x+1"))
Console.WriteLine(rx.IsMatch("7"))

شكرا جزيلا أحي لقد اشتغل

لو كان شرح بسيط له سأكون شاكرا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

اخي السر في العبارة السابقة يكمن في المعامل ? معامل الاختيار لو تلاحظ كل حد اختياري يعني يمكن يظهر ويمكن لا, نفس العملية الاشارة يمكن تظهر او لا وان ظهرت ضروري تكون + او -

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

أظن أن مشكلة الأس عادت فهو يقبل مثلا : x^89

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

اخي تأكد من المدخل السابق, فالعبارة اعلاة غير مقبولة في كودي السابق؟!!

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .