نظرا لي انشغال الاخ ابو روضه سؤال في ال Regex - اليوم السابع - 21-12-19
عندي في ريتش بوكس هذه الجمله
"name":"rtrffss","fan_count":11117,"link":"www.web.com/","id":"5544488889955"
وعندي داتا جريد فيو محتاج اعدل علي الباترن حتي اقدر انا اضيف كل المحتوي في عامود في الداتا جريد فيو
كتبت هذا الكود ولكن لم يظبط معي
كود :
Dim json As String = TextBox3.Text
Dim name = From t As String In json.Split(vbNewLine) Select _
System.Text.RegularExpressions.Regex.Match(t, "name"":""(.+)"",").Groups(1).Value
Dim fan_count = From t As String In json.Split(vbNewLine) Select _
System.Text.RegularExpressions.Regex.Match(t, "fan_count"":(.+),""").Groups(1).Value
Dim link = From t As String In json.Split(vbNewLine) Select _
System.Text.RegularExpressions.Regex.Match(t, "link"":""(.+)"",""").Groups(1).Value
Dim id = From t As String In json.Split(vbNewLine) Select _
System.Text.RegularExpressions.Regex.Match(t, "id"":""(.+)""").Groups(1).Value
For i As Integer = 0 To name.Count - 1
DataGridView1.Rows.Add(id(i), name(i), fan_count(i), link(i))
Next
RE: نظرا لي انشغال الاخ ابو روضه سؤال في ال Regex - ابو ليلى - 22-12-19
السلام عليكم و رحمة الله و بركاته
اخي الكريم بما ان نصوصك اشبه ما تكون بالثابته من حيث التنسيق.
فما اراه انها جدول باعمدة و صفوف ليس الا , لماذا تتعب نفسك في اعادة صياغتها بالكود.
انت تعرف متغيرات كثيرة و مقارنات اكثر.
الهدف من استخدام Regular Expression هو اجراء مقارنات محددة تختلف في تفاصيلها و ضمن نطاق محدود.
اما انت لديك تفاصيل ثابته , اشرت اليك سابقا بكود نظيف يستخدم مكتبات سريعة و قليلة التكلفة على النظام
عندما تتعامل مع بيانات كثيرة ستشهد بطئ من استخدام التعابير القياسية.
ماذا لو تغير لديك الملف و اصبح لديك حقول اكثر , هل ستقوم بتغير الكود و اعادة تعريف متغيرات توافق عدد الحقول و من ثم اجراء مقارنات جديدة و اعادة التعبئة ؟؟؟
هذه ليست برمجة على ما اعتقد , الشيئ الصحيح ان ابني دالة تقوم بمعالجة الملف مهما اختلفت التفاصيل و مهما كان حجم البيانات.
على اي حال الامر يعود لك.
جرب الكود التالي
PHP كود :
Private Sub btnGetRows_Click(sender As Object, e As EventArgs) Handles btnGetRows.Click
For Each Str As String In RichTextBox1.Lines Str = Str.Replace("""", "") Dim items = Str.Split(New Char() {","c}, StringSplitOptions.RemoveEmptyEntries).[Select] _ (Function(s) s.Split(New Char() {":"c})).ToDictionary(Function(K) K(0), Function(V) V(1))
DataGridView1.Rows.Add(items.Values.ToArray) Next
End Sub
و اذا احببت ان تقوم الدالة نفسها بصنع الاعمدة بدل من انشائها يدوياً و مهم اختلف عدد الاعمدة.
PHP كود :
Dim Str As String = RichTextBox1.Lines(0).Replace("""", "") Dim items = Str.Split(New Char() {","c}, StringSplitOptions.RemoveEmptyEntries).[Select] _ (Function(s) s.Split(New Char() {":"c})).ToDictionary(Function(K) K(0), Function(V) V(1))
For Each v In items.Keys.ToArray DataGridView1.Columns.Add(New DataGridViewTextBoxColumn With {.HeaderText = v}) Next
بالتوفيق
RE: نظرا لي انشغال الاخ ابو روضه سؤال في ال Regex - اليوم السابع - 22-12-19
(22-12-19, 03:19 AM)ابو ليلى كتب : السلام عليكم و رحمة الله و بركاته
اخي الكريم بما ان نصوصك اشبه ما تكون بالثابته من حيث التنسيق.
فما اراه انها جدول باعمدة و صفوف ليس الا , لماذا تتعب نفسك في اعادة صياغتها بالكود.
انت تعرف متغيرات كثيرة و مقارنات اكثر.
الهدف من استخدام Regular Expression هو اجراء مقارنات محددة تختلف في تفاصيلها و ضمن نطاق محدود.
اما انت لديك تفاصيل ثابته , اشرت اليك سابقا بكود نظيف يستخدم مكتبات سريعة و قليلة التكلفة على النظام
عندما تتعامل مع بيانات كثيرة ستشهد بطئ من استخدام التعابير القياسية.
ماذا لو تغير لديك الملف و اصبح لديك حقول اكثر , هل ستقوم بتغير الكود و اعادة تعريف متغيرات توافق عدد الحقول و من ثم اجراء مقارنات جديدة و اعادة التعبئة ؟؟؟
هذه ليست برمجة على ما اعتقد , الشيئ الصحيح ان ابني دالة تقوم بمعالجة الملف مهما اختلفت التفاصيل و مهما كان حجم البيانات.
على اي حال الامر يعود لك.
جرب الكود التالي
PHP كود :
Private Sub btnGetRows_Click(sender As Object, e As EventArgs) Handles btnGetRows.Click
For Each Str As String In RichTextBox1.Lines Str = Str.Replace("""", "") Dim items = Str.Split(New Char() {","c}, StringSplitOptions.RemoveEmptyEntries).[Select] _ (Function(s) s.Split(New Char() {":"c})).ToDictionary(Function(K) K(0), Function(V) V(1))
DataGridView1.Rows.Add(items.Values.ToArray) Next
End Sub
و اذا احببت ان تقوم الدالة نفسها بصنع الاعمدة بدل من انشائها يدوياً و مهم اختلف عدد الاعمدة.
PHP كود :
Dim Str As String = RichTextBox1.Lines(0).Replace("""", "") Dim items = Str.Split(New Char() {","c}, StringSplitOptions.RemoveEmptyEntries).[Select] _ (Function(s) s.Split(New Char() {":"c})).ToDictionary(Function(K) K(0), Function(V) V(1))
For Each v In items.Keys.ToArray DataGridView1.Columns.Add(New DataGridViewTextBoxColumn With {.HeaderText = v}) Next
بالتوفيق
شكرا لمساعدتك اخ ابوليلي ولكن للأسف لم يفلح معي هذا الكود وجربت اكثر من طريقه لم تفلح غير ان اكتب الباترن زاي ما انا عملت في الكود ولكن مش عارف اظبطه بحيث اللي امام كلمه اي دي يروح في العامود الخاص به واللي امام كلمه لينك يروح في العامود الخاص به في الداتا جريد فيو وهكذا
"name":"rtrffss","fan_count":11117,"link":"www.web.com/","id":"5544488889955"
RE: نظرا لي انشغال الاخ ابو روضه سؤال في ال Regex - ابو روضة - 22-12-19
لو تريد جعل الid فى خانة والاسم بخانة أخرى فجرب كتابة الكود بهذا الشكل طبعا مع
تغير الباترين تبعك.
PHP كود :
Dim id As String Dim name As String For Each f As Match In Regex.Matches(RichTextBox1.Text, "تكتب هنا الباترين", RegexOptions.Compiled + RegexOptions.Multiline) name = f.Groups(1).Value id = f.Groups(2).Value Dim lvi As New ListViewItem(name, 0) lvi.SubItems.Add(id) ListView1.Items.Add(lvi) Next
RE: نظرا لي انشغال الاخ ابو روضه سؤال في ال Regex - اليوم السابع - 22-12-19
(22-12-19, 11:44 AM)ابو روضة كتب : لو تريد جعل الid فى خانة والاسم بخانة أخرى فجرب كتابة الكود بهذا الشكل طبعا مع
تغير الباترين تبعك.
PHP كود :
Dim id As String Dim name As String For Each f As Match In Regex.Matches(RichTextBox1.Text, "تكتب هنا الباترين", RegexOptions.Compiled + RegexOptions.Multiline) name = f.Groups(1).Value id = f.Groups(2).Value Dim lvi As New ListViewItem(name, 0) lvi.SubItems.Add(id) ListView1.Items.Add(lvi) Next
شكرا اخي ابو روضه ولكن المشكله ليس في الكود المشكله ان مش عارف اكتب الباترن بشكل صحيح
فا انا عندي تكست بوكس بيكون فيه الجمله دي
"name":"rtrffss","fan_count":11117,"link":"www.facebook.com/","id":"5544488889955"
كتبت الكود بهذا الشكل علشان يرسل كل شئ الي الداتا جريد فيو ولكن ظهر هكذا
كود :
Dim json As String = TextBox3.Text
Dim name = From t As String In json.Split(vbNewLine) Select _
System.Text.RegularExpressions.Regex.Match(t, "name"":""(.+)"",").Groups(1).Value
Dim fan_count = From t As String In json.Split(vbNewLine) Select _
System.Text.RegularExpressions.Regex.Match(t, "fan_count"":(.+),""").Groups(1).Value
Dim link = From t As String In json.Split(vbNewLine) Select _
System.Text.RegularExpressions.Regex.Match(t, "link"":""(.+)"",""").Groups(1).Value
Dim id = From t As String In json.Split(vbNewLine) Select _
System.Text.RegularExpressions.Regex.Match(t, "id"":""(.+)""").Groups(1).Value
For i As Integer = 0 To name.Count - 1
DataGridView2.Rows.Add(id(i), name(i), fan_count(i), link(i))
Next
خانه id مظبوطه وخانه link مظبوطه المشكله في خانه name و likes فيهم زياداتا زاي ما الصوره موضحه
RE: نظرا لي انشغال الاخ ابو روضه سؤال في ال Regex - ابو روضة - 22-12-19
ما لو حضرتك بتدرك صفحة الويب التى تريد جلب المعلومات منها كنت ريحتك بفضل الله.
لكنك بتكتب السؤال وأنا لا أدرى من أين ستحصل على البيانات.
فلا يكفى ما موجود بداخل التكست بوكس "name":"rtrffss","fan_count":11117,"link":"www.facebook.com/","id":"5544488889955"..
من فضلك أكتب الصفحة التى تريد جلب المعلومات منها لآنى سأجلبها من خلال مكتبة HtmlAgilityPa
فهى الأفضل بالنسبة لى ولو لم أعرف سأقول لك " حاولت ولم أعرف "
RE: نظرا لي انشغال الاخ ابو روضه سؤال في ال Regex - 3booody - 22-12-19
السلام عليكم ورحمة الله وبركاته
بعد أذن اخوتي واساتذتي ,, اتمنى هذا الكود يكون شرح الك عن التعابير القياسية هو جواب لسؤالك ولكن بصيغة مختلفة حتى تفهم التعابير القياسية اكثر وال Groups في التعابير القياسية وتحل سؤالك بنفسك لاني عطيتك نصف الحل
ولاتستخدم نفس طريقتي هدفي هو فقط اوصلك فكرة التعامل مع النصوص بال Regex
كود :
Dim txt As String = TextBox1.Text.Replace("""", "'").ToLower
Dim data = From t As String In txt.Split(vbNewLine) Select Regex.Match(t, _
"name':'(.+)','fan_count':(.+),'link':'(.+)','id':'(.+)'").Groups(1).Value & "#" & _
Regex.Match(t, "name':'(.+)','fan_count':(.+),'link':'(.+)','id':'(.+)'").Groups(2).Value & "#" & _
Regex.Match(t, "name':'(.+)','fan_count':(.+),'link':'(.+)','id':'(.+)'").Groups(3).Value & "#" & _
Regex.Match(t, "name':'(.+)','fan_count':(.+),'link':'(.+)','id':'(.+)'").Groups(4).Value
MsgBox("Name=" & data(0).Split("#")(0))
MsgBox("fan=" & data(0).Split("#")(1))
MsgBox("link=" & data(0).Split("#")(2))
MsgBox("id=" & data(0).Split("#")(3))
لاتنسى استدعاء مجال الاسماء
كود :
Imports System.Text.RegularExpressions
RE: نظرا لي انشغال الاخ ابو روضه سؤال في ال Regex - اليوم السابع - 23-12-19
(22-12-19, 04:18 PM)3booody كتب : السلام عليكم ورحمة الله وبركاته
بعد أذن اخوتي واساتذتي ,, اتمنى هذا الكود يكون شرح الك عن التعابير القياسية هو جواب لسؤالك ولكن بصيغة مختلفة حتى تفهم التعابير القياسية اكثر وال Groups في التعابير القياسية وتحل سؤالك بنفسك لاني عطيتك نصف الحل
ولاتستخدم نفس طريقتي هدفي هو فقط اوصلك فكرة التعامل مع النصوص بال Regex
كود :
Dim txt As String = TextBox1.Text.Replace("""", "'").ToLower
Dim data = From t As String In txt.Split(vbNewLine) Select Regex.Match(t, _
"name':'(.+)','fan_count':(.+),'link':'(.+)','id':'(.+)'").Groups(1).Value & "#" & _
Regex.Match(t, "name':'(.+)','fan_count':(.+),'link':'(.+)','id':'(.+)'").Groups(2).Value & "#" & _
Regex.Match(t, "name':'(.+)','fan_count':(.+),'link':'(.+)','id':'(.+)'").Groups(3).Value & "#" & _
Regex.Match(t, "name':'(.+)','fan_count':(.+),'link':'(.+)','id':'(.+)'").Groups(4).Value
MsgBox("Name=" & data(0).Split("#")(0))
MsgBox("fan=" & data(0).Split("#")(1))
MsgBox("link=" & data(0).Split("#")(2))
MsgBox("id=" & data(0).Split("#")(3))
لاتنسى استدعاء مجال الاسماء
كود :
Imports System.Text.RegularExpressions
بفضل الله وفضل اخ عاصم وابو روضه و ابو ليلي و اخ عبود تم الحل كل الاكواد صحيحه ولكن الخطأ كان مني فالأنسان يخطأ و يصيب
RE: نظرا لي انشغال الاخ ابو روضه سؤال في ال Regex - asemshahen5 - 23-12-19
الفضل الله و الحمد الله و الشكر الله عز وجل بارك الله فيك و جزاك الله عنا كل خير موفق انشاء الله .
|