تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
مشكله بسيطه بالريجكس حاولت كتير فيها قبل الموضوع
#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


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


الردود في هذا الموضوع
RE: مشكله بسيطه بالريجكس حاولت كتير فيها قبل الموضوع - بواسطة ابو ليلى - 19-04-20, 02:08 AM


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


يقوم بقرائة الموضوع: