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

مساعدة في Regular Expresions

بدأه OricalcosZy في 3 يوليو 2011 · 19 رد · 1,284 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

سؤالي هو أنني أريد وضع مربع نص يقبل فقط العبارة 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}))|)$")

Zefri Yahya - ArabTeam 2000

tpc7rzy94tx8iduak4b.png

#2

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

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

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

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

#3

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

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

Zefri Yahya - ArabTeam 2000

tpc7rzy94tx8iduak4b.png

#4

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

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

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

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

#5

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

-x^3-x²

ويقبل :

x^3+

Zefri Yahya - ArabTeam 2000

tpc7rzy94tx8iduak4b.png

#6

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

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


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+"))

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

#7
VB Helper كتب:

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

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


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 فقد بقيت اسبوعا كاملا أحاول معها ولم أفلح

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

Zefri Yahya - ArabTeam 2000

tpc7rzy94tx8iduak4b.png

#8

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

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


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"))

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

#9

لم يقبل الكود

x²+x+1

Zefri Yahya - ArabTeam 2000

tpc7rzy94tx8iduak4b.png

#10

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

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


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+)?$")

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

#11

افترضت ان المطلوب قيم المعاملات 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

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

المرفقات
w4.PNG

تم تعديل هذه المشاركة بواسطة ihope في 5 يوليو 2011 في 03:57

other ESTJ thing

اقتباس
Help Me To Help You

0xBAD00DAD.png

#12

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

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

Zefri Yahya - ArabTeam 2000

tpc7rzy94tx8iduak4b.png

#13
OricalcosZy كتب:

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

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

post-20735-046572800 1309875322_thumb.pn

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

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

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

المرفقات
Derek Slager- A Better .NET Regular Expression Tester.png

تم تعديل هذه المشاركة بواسطة ihope في 5 يوليو 2011 في 17:16

other ESTJ thing

اقتباس
Help Me To Help You

0xBAD00DAD.png

#14

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

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

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

#15
VB Helper كتب:

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

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

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

ihope كتب:

post-20735-046572800 1309875322_thumb.pn

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

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

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

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

عذرا huh.gif

Zefri Yahya - ArabTeam 2000

tpc7rzy94tx8iduak4b.png

#16

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

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


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"))

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

#17
VB Helper كتب:

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

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


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"))

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

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

Zefri Yahya - ArabTeam 2000

tpc7rzy94tx8iduak4b.png

#18

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

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

1

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

#19

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

Zefri Yahya - ArabTeam 2000

tpc7rzy94tx8iduak4b.png

#20

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

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

1

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

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