تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
مشكله بسيطه بالريجكس حاولت كتير فيها قبل الموضوع
#1
عندي تيكست بوكس به
كود :
{"id":"10000","name":"Anosh"
{"id":"7557","name":"Fathy Kanu","mobile_phone":"+201001"
{"id":"10065","name":"Fathe Mohamed Akoty"
وعندي زر وعندي داتا جريد فيو بها 3 اعمده 
اريد عند الضغط علي الزر اللي امام كلمه اي دي يروح في اول عامود واللي امام كلمه نيم يروح في ثاني عامود واللي امام كلمه مويايل فون يروح في ثالث عامود 
كتبت هذا الكود ولكن لاظبط معي 
كود :
Dim json As String = TextBox1.Text
       Dim Name = From t As String In json.Split(vbNewLine) Select _
                System.Text.RegularExpressions.Regex.Match(t, "id"":""(.+)"",""").Groups(1).Value
       Dim id = From t As String In json.Split(vbNewLine) Select _
                System.Text.RegularExpressions.Regex.Match(t, "name"":""(.+)"",""").Groups(1).Value
       Dim id1 = From t As String In json.Split(vbNewLine) Select _
             System.Text.RegularExpressions.Regex.Match(t, """mobile_phone"":""(.+)""").Groups(1).Value

       For i As Integer = 0 To Name.Count - 1
           DataGridView1.Rows.Add(id(i), Name(i), id1(i))
       Next
       Dim RowsCount As Integer = 0
       If DataGridView1.AllowUserToAddRows = True Then
           RowsCount = DataGridView1.Rows.Count - 2
       Else
           RowsCount = DataGridView1.Rows.Count - 1
       End If
       For i = 0 To RowsCount
           ListBox3.Items.Add(DataGridView1.Rows(i).Cells(0).Value)
       Next
الرد }}}
تم الشكر بواسطة: ابو ليلى
#2
السلام عليكم اخي اليوم السابع
بغض النظر عن كودك والعمل بالريجكس
اليك مثال  وظريقة افضل


الملفات المرفقة
.zip   Add row fromText.zip (الحجم : 93.71 ك ب / التحميلات : 9)
اعمل الخير وأجرك لا تنتظره فالله خير من إليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات







الرد }}}
تم الشكر بواسطة: mohamedahmed1 , اليوم السابع , ابو ليلى
#3
(17-04-20, 09:25 PM)ابراهيم ايبو كتب : السلام عليكم اخي اليوم السابع
بغض النظر عن كودك والعمل بالريجكس
اليك مثال  وظريقة افضل

حبيبي يا كبير جاري التحميل والتجربه

(17-04-20, 09:25 PM)ابراهيم ايبو كتب : السلام عليكم اخي اليوم السابع
بغض النظر عن كودك والعمل بالريجكس
اليك مثال  وظريقة افضل

للأسف حاولت اعدل عليه ما وفاش بالغرض ولكن علي اي حال فانا شاكر لك جدااا
الرد }}}
تم الشكر بواسطة: mohamedahmed1 , ابو ليلى
#4
اخي اليوم السابع 
يجب ان يكون النص الذي في مربع النص بنفس الشكل الذي وضعته لك في مربع النص
لان التقطيع معتمد على اشارتي(الفاصلة المنقوطة) وكذلك (=)
اعمل الخير وأجرك لا تنتظره فالله خير من إليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات







الرد }}}
#5
(17-04-20, 10:26 PM)ابراهيم ايبو كتب : اخي اليوم السابع 
يجب ان يكون النص الذي في مربع النص بنفس الشكل الذي وضعته لك في مربع النص
لان التقطيع معتمد على اشارتي (Wink وكذلك (=)

اعلم ذلك ولكن اذا كان التكست بوكس يساوي اكثر من نص لا يعامل الا مع النص الاول فقط + ان غيرت الاشارات لم تنجح
الرد }}}
تم الشكر بواسطة: ابراهيم ايبو , mohamedahmed1 , ابو ليلى
#6
اخي انت لديك سجل وتريد ادخاله في الداتا غرايد
الطريقة الامثل كل عمود يأخذ من مربع نص مستقل
اما ان كانت كل القيم في مربع نص واجد فيجب ان يكون لها فورمات معينة وانا استخدمت فورمات اشارتي الفاصبة واليساوي
وان كان لديك نص وفيه عدد من السطور وكل سطر عبارة عن سجل وتريد جلب البيانات الى الداتا غرايد فهذا امر مختلف يعني انك تريد استخدام نص كقاعدة بيانات لدي مثال شبه جاهز بقي  القليل لاكماله فيه كل شيء جديد - حفظ - تعديل - حذف - بحث - انشاء نص كقاعدة بيانات -حذف القاعدة - ازالة السطور الفارغة ومزايا اخرى سوف اورده في القريب العاجل بعد ان ينتهي ان شاء الله
اعمل الخير وأجرك لا تنتظره فالله خير من إليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات







الرد }}}
تم الشكر بواسطة: اليوم السابع , mohamedahmed1 , ابو ليلى
#7
(17-04-20, 10:40 PM)ابراهيم ايبو كتب : اخي انت لديك سجل وتريد ادخاله في الداتا غرايد
الطريقة الامثل كل عمود يأخذ من مربع نص مستقل
اما ان كانت كل القيم في مربع نص واجد فيجب ان يكون لها فورمات معينة وانا استخدمت فورمات اشارتي الفاصبة واليساوي
وان كان لديك نص وفيه عدد من السطور وكل سطر عبارة عن سجل وتريد جلب البيانات الى الداتا غرايد فهذا امر مختلف يعني انك تريد استخدام نص كقاعدة بيانات لدي مثال شبه جاهز بقي  القليل لاكماله فيه كل شيء جديد - حفظ - تعديل - حذف - بحث - انشاء نص كقاعدة بيانات -حذف القاعدة - ازالة السطور الفارغة ومزايا اخرى سوف اورده في القريب العاجل بعد ان ينتهي ان شاء الله

شكرا لك اخي ولكن الموضوع ابسط من كده بكتير
الرد }}}
تم الشكر بواسطة: ابراهيم ايبو , ابو ليلى
#8
السلام عليكم و رحمة الله و بركاته

كونك تتعامل مع Regex بشكل مستمر المفروض ان تلاحقها باستمرا و تتعرف على طرقها.
تعرف على طرق كتابة الباترن.

PHP كود :
       Dim id_pattern As String "^.*id:(\w+(\s\w*)?)" 

الشرح:
^.*id:
و تعني نص يبدأ بـ :id     (.^)
هي كل الحروف بين (a-z) و (A-Z) و الارقام (0-9)       (w\)         
و هي تعني عدد محارف يبدأ من 1  الى لا نهاية و يمكن تحديد العدد     (+)
و يمكن ان تنوب (*) و هي تبدأ من الصفر.
و هي تعني اننا نريد شمل المسافات الفارغة    (\s)
و يمكن جعل المسافات الفارغة او اي شي اخر اختياري عبر المعامل (?)   فتصبح   (?\s)

و يمكن كتابة الباترن السابق بطريقة اخرى
PHP كود :
id:(\w*\s?\w*) 

PHP كود :
Dim phone_pattern As String "^.*mobile_phone:(\+?(\d*))" 
الشي الجديد في هذا الباترن:
(+\)  . كون الاشارة + مستخدمة في تعابير Regex كمعامل رئيسي لذا وجب علينا ان نخبره اننا نريد منه تحسها كمحرف عادي نريد التعامل معه و تستخدم  (\)   مع اي معامل لاجباره على قرائتها كمحرف نريد البحث عنه و يسمى الهروب من التحسس.
(d\) نستخدمها للتعامل مع الخانات الرقمية و يمكنك استعمال (w\)  بدلاً عنها.

PHP كود :
Dim name_pattern As String "^.*name:(\w*\s?\w*)" 
و يمكن كتابته بطريقة اخرى
PHP كود :
Dim name_pattern As String "^.*name:(\w+(\s\w*)?)*)" 

تتنوع طرق الكتابة حسب كل شخص و لاتهم الطريقة كثيراً بقدر ما تهم النتيجة.



بناءً على ما سبق:
يمكنك عمل اجراء ينفذ لك المطلوب كما يلي:
PHP كود :
   Public Sub GetData()
 
       Dim json As String TextBox1.Text.Replace("""""").Replace("{""")

 
       Dim Content From t As String In json.Split(vbNewLine)

 
       Dim idnamemobile_phone As String

        Dim id_pattern 
As String "^.*id:(\w+(\s\w*)?)"
 
       Dim name_pattern As String "^.*name:(\w*\s?\w*)"
 
       Dim phone_pattern As String "^.*mobile_phone:(\+?(\d*))"

 
       Dim options As RegexOptions RegexOptions.Multiline


        For p 
As Integer 0 To Content.Count 1
            id 
Regex.Match(Content(p).ToStringid_patternoptions).Groups(1).Value
            name 
Regex.Match(Content(p).ToStringname_patternoptions).Groups(1).Value
            mobile_phone 
Regex.Match(Content(p).ToStringphone_patternoptions).Groups(1).Value
            Dim Row 
As String() = New String() {idnamemobile_phone}
 
           DataGridView1.Rows.Add(Row)
 
           ListBox3.Items.Add(String.Join(" , "Row))
 
           'ListBox3.Items.Add(name)
        Next

    End Sub 


حاول ان تتعرف اكثر على استخدامها
اهديك هذا الموقع للتعامل مع Regex بشكل مباشر 
ضع نصوصك التي تريدها و اكتب الباترن و عاين النتيجة خطوة بخطوة 
و بعد ان تتأكد من نجاح العمل تأتي الخطوة الاجمل و هي انتاج كودك من الموقع مباشرة عبر Code Generator في نفس النافذة
و هو ينتج لك كود بعدة لغات برمجة و منها #C لتتعامل معه مباشرة.
regex101


بالتوفيق
اللهم لك الحمد كما ينبغي لجلال وجهك و عظيم سلطانك
في حل و ترحال
الرد }}}
تم الشكر بواسطة: ابراهيم ايبو , ابو روضة



التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم