اذهب إلى المحتوى
  • 0

سؤال حول استعمال diff و regex

Sami Remili

السؤال

سلام عليكم 

ماهو استعمال diff و diff -u و vimdiff  ماهو الفرق بينهم 

ماهو الفرق بين اشارة <  و > عند استعمال  patch و diff file 

ماهو استعمالات regex  في مثال : re.search(r"^[a-zA-Z] ", "this is a sentence with spaces.")                                                     lllllllllllllllllllll)

re.search(r"py[a-z] *n", "Python Porgramming.")                                                                                                                                        ffffffff)

"re.search(r"o+L+", "goldfish.")                                                                                                                                                                                  ff)

re.findall(r"[a-zA-Z]{5} ", "a scary ghost appeared")                                                                                                                    dddddddddd)

 

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

تحياتي
بالنسبة لdiff هي أداة لتوضيح الفرق بين ملفين، ويتم إستدعائها كالآتي:
 

diff filename1 filename2

ويمكن إضافة -u عند إستدعائها كالآتي:
 

diff -u filename1 filename2

في كلا الحالتين يتم توضيح الإختلاف بين الملفين، ولكن يكون التنسيق مختلف، فعند إضافة ال-u يتم طباعة الإختلاف بشكل يسمى بالunified format وهي فقط طريقة مختلفة لتوضيح الإختلاف بين الملفين.


مثال توضيحي، إذا كان لدينا ملفين first_file.txt ومحتوياته هي:

first line
second line
third line

وملف آخر اسمه second_file.txt ومحتوياته هي:

first line
second line

عند إستخدام diff first_file.txt second_file.txt يكون الناتج هو:
diff.png.acdbcdf24523aa44c804e2f595083586.png

وعند إستخدام diff -u first_file.txt second_file.txt يكون الناتج هو:
diff_u.png.16ec30e1acaf2319e61bec1a5a8f1602.png

بالنسبة لvimdiff، فإن vim هو text editor، يوفر الكثير من الأدوات التي تسهل على المبرمجين، إحدى هذه الأدوات هي أداة vimdiff وهي تستخدم أيضاً لتوضيح الإختلاف بين الملفات.
يتم إستدعائها كالآتي:
 

vimdiff first_file.txt second_file.txt

ويكون المخرجات هي:
vimdiff.thumb.png.2fd33c0f3884d2026faa70bea05cbccc.png

بالنسبة لإشارة < و  إشارة > ، يتم إستخدامهم لإعادة توجيه المخرجات والمدخلات. مثلا عند إستخدام الأمر الآتي مع diff:

diff first_file.txt second_file.txt > diff.txt

يتم إعادة توجيه المخرجات إلى الملف diff.txt

يمكنك القراءة عن إعادة التوجيه في موسوعة حسوب من هنا.


بالنسبة للregex في المثال:

re.search(r"^[a-zA-Z] ", "this is a sentence with spaces.") 

الregex string المطلوب البحث عنه أوله ^ أي أن يجب أن يطابق الحرف التالي البداية، ثم حرف واحد من الأبجدية a-zA-Z ثم مسافة.
ستكون نتيجة البحث السابق فارغة، لأن الجملة التي يتم البحث فيها أولها ليس حرف متبوع بمسافة.

 

بالنسبة ل:

re.search(r"py[a-z] *n", "Python Porgramming."):

يتم البحث عن الحرفين py متبوعين بحرف من الأبجدية من a-z متبوعة بمسافة إختيارية أو أكثر متبوعة بحرف n.
أيضاً ستكون نتيجة البحيث فارغة لأن ما يتم البحث عنه غير موجود بالstring.
ربما كان القصد هو الآتي:

re.search(r"Py[a-z]*n", "Python Porgramming.")

وقتها ستكون نتيجة البحث هي Python لأن بالفعل Py جائت متبوعة بحروف من الأبجدية بعدد صفر أو أكثر من مرة، متبوعة بحرف n.


بالنسبة ل:

 re.search(r"o+L+", "goldfish.")

يتم البحث عن الحرف o مرة واحدة أو أكثر متبوع بحرف L كابيتال مرة واحدة أو أكثر، وستكون نتيجة البحث فارغة لأنه لا يوجد مطابقة.
لكن إذا تم تغيير حرف الL إلى l ستتم المطابقة لol

 

بالنسبة ل:

 re.findall(r"[a-zA-Z]{5} ", "a scary ghost appeared")   

يتم البحث عن عدد 5 حروف من حروف الأبجدية سواء الكابيتال أو السمول متبوعة بمسافة، بالتالي يتم إرجاع ghost و scary.

بالتوفيق.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ On 8/23/2020 at 13:40 قال مصطفى القباني:

تحياتي
بالنسبة لdiff هي أداة لتوضيح الفرق بين ملفين، ويتم إستدعائها كالآتي:
 


diff filename1 filename2

ويمكن إضافة -u عند إستدعائها كالآتي:
 


diff -u filename1 filename2

في كلا الحالتين يتم توضيح الإختلاف بين الملفين، ولكن يكون التنسيق مختلف، فعند إضافة ال-u يتم طباعة الإختلاف بشكل يسمى بالunified format وهي فقط طريقة مختلفة لتوضيح الإختلاف بين الملفين.


مثال توضيحي، إذا كان لدينا ملفين first_file.txt ومحتوياته هي:


first line
second line
third line

وملف آخر اسمه second_file.txt ومحتوياته هي:


first line
second line

عند إستخدام diff first_file.txt second_file.txt يكون الناتج هو:
diff.png.acdbcdf24523aa44c804e2f595083586.png

وعند إستخدام diff -u first_file.txt second_file.txt يكون الناتج هو:
diff_u.png.16ec30e1acaf2319e61bec1a5a8f1602.png

بالنسبة لvimdiff، فإن vim هو text editor، يوفر الكثير من الأدوات التي تسهل على المبرمجين، إحدى هذه الأدوات هي أداة vimdiff وهي تستخدم أيضاً لتوضيح الإختلاف بين الملفات.
يتم إستدعائها كالآتي:
 


vimdiff first_file.txt second_file.txt

ويكون المخرجات هي:
vimdiff.thumb.png.2fd33c0f3884d2026faa70bea05cbccc.png

بالنسبة لإشارة < و  إشارة > ، يتم إستخدامهم لإعادة توجيه المخرجات والمدخلات. مثلا عند إستخدام الأمر الآتي مع diff:


diff first_file.txt second_file.txt > diff.txt

يتم إعادة توجيه المخرجات إلى الملف diff.txt

يمكنك القراءة عن إعادة التوجيه في موسوعة حسوب من هنا.


بالنسبة للregex في المثال:


re.search(r"^[a-zA-Z] ", "this is a sentence with spaces.") 

الregex string المطلوب البحث عنه أوله ^ أي أن يجب أن يطابق الحرف التالي البداية، ثم حرف واحد من الأبجدية a-zA-Z ثم مسافة.
ستكون نتيجة البحث السابق فارغة، لأن الجملة التي يتم البحث فيها أولها ليس حرف متبوع بمسافة.

 

بالنسبة ل:


re.search(r"py[a-z] *n", "Python Porgramming."):

يتم البحث عن الحرفين py متبوعين بحرف من الأبجدية من a-z متبوعة بمسافة إختيارية أو أكثر متبوعة بحرف n.
أيضاً ستكون نتيجة البحيث فارغة لأن ما يتم البحث عنه غير موجود بالstring.
ربما كان القصد هو الآتي:


re.search(r"Py[a-z]*n", "Python Porgramming.")

وقتها ستكون نتيجة البحث هي Python لأن بالفعل Py جائت متبوعة بحروف من الأبجدية بعدد صفر أو أكثر من مرة، متبوعة بحرف n.


بالنسبة ل:


 re.search(r"o+L+", "goldfish.")

يتم البحث عن الحرف o مرة واحدة أو أكثر متبوع بحرف L كابيتال مرة واحدة أو أكثر، وستكون نتيجة البحث فارغة لأنه لا يوجد مطابقة.
لكن إذا تم تغيير حرف الL إلى l ستتم المطابقة لol

 

بالنسبة ل:


 re.findall(r"[a-zA-Z]{5} ", "a scary ghost appeared")   

يتم البحث عن عدد 5 حروف من حروف الأبجدية سواء الكابيتال أو السمول متبوعة بمسافة، بالتالي يتم إرجاع ghost و scary.

بالتوفيق.

شكرا جزيلا اخي بارك الله فيك 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...