السلام عليكم ورحمة الله وبركاته
فعلاً هذه اللغة معقدة جداً وهنيئاً للذي يفهمها فهي تؤدي أغلب الأعمال التي تريد تنفيذها (إذا فهمت صح كيف تستخدمها)
لي محاولات صغيرة معها وقد استفدت من مشاركات الأخوين (Ramilove و أحمد الحربي)
علي العموم هذه طريقة مبسطة لعمل ما تريد :
نستود مجال الأسماء :
كود :
Imports System.Text.RegularExpressions
الكود :
كود :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
' الباترن هو ما نريد البحث عنه بإدخال الرموز التي تفهما اللغة
Dim Patren As String = "(<!\[CDATA\[(.*)\]\]>)"
' الأقواس المعقوفة وضعتها عشان يعتبر كل النص مجموعة واحدة
' كذلك وضعت أقواس معقوفة حول النص الذي تريد استخراجه لأنه سيفيدنا لاحقا كما سنرى
' لو لاحظت وضعت علامة الإسلاش أما الأقواس المربعة
' ذلك لأنها من الرموز المحجوزة للغة
' وبعدين وضعت بدل النص الذي تريد استخراجه نقطة ونجمة يعني أبحث عن أي شيء في هذا المكان بالتحديد
'\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
' إنشاء كلاس البحث ونعطيه النص الذي نريد البحث فيه
' وكذلك الباترن
'علي ما أعتقد تعني البحث في أي حالة من حالات الأحرف RegexOptions.IgnoreCase الـ
Dim Mc As MatchCollection = Regex.Matches("[b][color=#b22222]Put Text Here[/color][/b]", Patren, RegexOptions.IgnoreCase)
' التحقق من احتواء الكلاس علي نتيجة
If Mc.Count > 0 Then
' حلقة للمرور علي النتائج
For i As Integer = 0 To Mc.Count - 1
' كما قلت سابقا وضعت الأقواس المعقوفة في الباترن لجعل النص في قروبات وهنا سنستفيد من ذلك
' هنا سنعرض القروبات المحتملة من 0 إلي 3 مثلاً ونجرب إذا وجدنا أحد القروبات يحوي النتيجة
' طبعاً إذا ما وجد نتيجة في القروبات من 0 إلي 3 ممكن نضيف قروبات أخرى 4 و 5 و 6 حتى نصل لنتيجة
' في هذا المثال النتيجة موجودة في القروب رقم 2 يعني ممكن تحذف الأول والثاني
' يمكنك بعد ذلك إسناد النتيجة لمربع نص أو أي شئ آخر
MsgBox(Mc(i).Groups(0).Value, MsgBoxStyle.Exclamation, "Groups 0") ' يمكنك أن تحذف هذا
MsgBox(Mc(i).Groups(1).Value, MsgBoxStyle.Exclamation, "Groups 1") ' وهذا أيضاً
MsgBox(Mc(i).Groups(2).Value, MsgBoxStyle.Exclamation, "Groups 2") ' اترك هذا لاحتوائه علي النص المطلوب
Next i
End If
End Sub
في مكان الـ
Put Text Here ضع النص الذي تريد البحث ضمنه مثلا تضع نصك السابق اللي تحت :
كود :
[color=#333333][FONT=Verdana][i]<![CDATA[welcome here]]>[/i][/FONT][/color]
لو لاحظت أنا تركت القروبات الثلاثة في المثال (كان ممكن أحذف الأول والثاني وأترك الثالث) لكن فضلت تركها عشان تعرف أنني بعرف النتيجة بتلك الطريقة المملة
أحيانا لو النص متشعب قد تصل القروبات إلي 10 أو أكثر حتى تأتي بالنتيجة المطلوبة
طبعا اللي يفهم هذه اللغة قد يجد طريقة أسرع وأفضل من هذه