❤🚭welcome to https://er-ramimohamed.blogspot.com/ please if ou have any question or suggestion dont heisting 🚭 to send it to me at erramixx@gmail.com thanks محمــــــــــــد الــــــــــــــــرامي يرحبكم ويتمنى لــــــــــكم ان تقضوا 🌹🌹وقت مفيد

الجمعة، 19 أبريل 2019

الأحد، 14 أبريل 2019

Re[gul]ar Expr[essio]n

السلام عليكم ورحمة الله
۞ الحمد لله رب العالمين والصلاة والسلام على سيدنا محمد صلى الله عليه و سلم ۞ 
اللهم لا علم لنا الا ماعلمتنا إنك أنت الحكيم العليم ،
اللهم علمنا ما ينفعنا وانفعنا بما علمتنا وزدنا علما ، وارنا الحق حقا وارزقنا اتباعه
وارنا الباطل باطلا وارزقنا اجتنابه واجعلنا ممن يستمعون القول فيتبعون أحسنه ،
وأدخلنا برحمتك في عبادك الصالحين ،
أما بعد. 

  
اليوم إن شاء الله أردت تقديم لكم موضوع حول التعابير القياسية أو التعابير النمطية
والمعروفة ب
Regular Expression
والتي يرمز لها ب :
RegEx أو RegExp

re[gul]arexpr[essio]


الهدف : سنحاول بإدن الله في هدا الموضوع تبسيط Pattern بشكل سلس ومبسط لتستطيع فهمه بشكل أدق 

نبدأ بالتعريف والمفاهيم الأساسية :
ماهي الـ Rege
هي اختصار لـكلمة Regular Expressions ومعناها الحرفي : التعابير النمطية أو القياسية، وهي تقنية تستخدم في معالجة النصوص (String)
ودلك بهدف البحث، أو المطابقة بين سلاسل من الأحرف، أو المقارنة، أو جلب جزء معين من النص حسب شرط محدد
وتعتمد هده التقنية أساسا علــى مـا يسـمـى بالـ Pattern وهي عبارة عن مجموعة رموز تستخدم للتحقق والتمييز بين الأرقام والحروف وأشياء عديدة... سنحاول شرحها بإدن الله
مطور هده التقنية أو بالأحرى هو من ساعد في تطويرها بشكل كبير  :

American mathematician : Stephen Cole Kleene
لقرائة المزيد حول تاريخ هده التقنية :
https://en.wikipedia.org/wiki/ Regular_expressio
إيجابيات هده التقنية :
نأخد مثال : أننا أردنا حذف جميع المسافات الموجودة داخل أحد الملفات
نستطيع عملها إما عن طريق البحث يدوياً في الملف وحذف جميع المسافات التي نجدها،
أو أن نقوم بإنشاء سكربت يحتوي على عدد ضخم من الشروط If والتكرارات Loop ونتأكد من كل حرف عن ما إذا كان بجانبه مسافة أم لا،
أما الحل الاخير فهو باستخدام الـ Regex - فبإمكانك بعبارة واحدة بسيطة لاتتجاوز السطر الواحد أن تقوم بجميع ماسبق،
إدن فاستخدامك لهده التقنية يختصر عليك وقتاً وجهداً هائلاً خاصة في التعامل مع النصوص الضخمة،
+ تستطيع استخدام هذه التقنية مع العديد من اللغات مثل : Java, PHP, Python, C, C#, JavaScript وغيرها...   

سنشرح أولا الرموز ودورها الأساسي وبعدها سنضع أمثلة تطبيقية للتوضيح ...

رموز أساسية تستخدم في التقنية :
• الرمز ( "" : هذا الرمز يستخدم عندما نريد البحث عن نص معين ...

• الرمز ( ^ ) : هذا الرمز يستخدم للتحقق من بداية النص برمز معين ...

• الرمز ( $ ) : هذا الرمز يستخدم للتحقق من نهاية النص برمز معين ...

• الرمز ( . ) : هذا الرمز يستخدم لجلب أي رمز موجود ما عدا الرمز الذي يشير لسطر جديد ...
• الرمز ( \ ) : يستخدم لتعطيل الرموز المستخدمة في التقـنيـة , ( مثل الرموز السابقة ) او جعل الاحرف العادية كاحرف خاصة مثل الرموز القادمة ...
  
• الرمز ( \. ) : هذا الرمز يستخدم للتحقق من وجود النقطة ...

• الرمز ( + ) : هذا الرمز يستخدم للتحقق من تكرار الشيء الذي قبله مرة أو اكثر ...

• الرمز ( * ) : هذا الرمز يستخدم للتحقق من تكرار الشيء الذي قبله من صفر ( أي حتى لو لم يكن هناك شيء أصلاً ) إلى ما لا نهاية.
و هي تستخدم للبحث عن تطابق يبدأ بحرف معين و ينتهي بحرف معين دون الإهتمام إذا كان يحتوي على شيء بين هذين الحرفين أم لا. 

• الرمز ( \b ) : هذا الرمز يستخدم للتحقق من أن مجموعة من الرموز تمثل كلمة واحدة يعني لا يوجد بينها مسافة 
Boundary (حدود النص)

• الرمز ( \d ) : هذا الرمز يستخدم للتحقق  من وجود الارقام من 0 إلى 9
any digit from 0 to 9
• الرمز ( \D ) : هذا الرمز يستخدم للبحث عن أي رمز  ما عدى الارقام أي هو خلاف الرمز السابق 
Any Non-digit character

• الرمز ( \s ) : هذا الرمز يستخدم للتحقق من وجود مسافة ( Space )
Any Whitespace
• الرمز ( \S ) : هذا الرمز يستخدم للبحث عن جميع الرموز ما عدى المسافة أي هو خلاف الرمز السابق
Any Non-whitespace character
• الرمز ( \w ) : هذا الرمز يستخدم للبحث سواءً عن حروف (صغيرة (a-z) أو كبيرة (َA-z)) أو أرقام (0-9)
Any Alphanumeric character
  
• الرمز ( \W ) : هذا الرمز يستخدم للبحث عن أي رمز غير الحروف والأرقام أي هو خلاف الرمز السابق
Any Non-alphanumeric character  
• الرمز ( x|y ) : هذا الرمز يعني أو ، الترتيب جد مهم
في حالة تغيير الترتيب على هدا الشكل y|x سيتم البحث عن y أولا ثم x
OR

• الرمز ( {m) : هذا الرمز يستخدم للبحث عن أي رمز يتألف من m رمز يعني عدد مرات تكرار الرمز 
الرمز يجب تحديده خارج اللامة وتحديدا قبلها
m Repetitions
• الرمز ( {m,n) : هذا الرمز يستخدم للبحث عن أي رمز يتألف من m إلى n رمز يعني عدد المرات التي تكرر فيها الرمز من m مرة إلى n مرة 
الرمز يجب تحديده خارج اللامة وتحديدا قبلها
m to n Repetitions
• الرمز ( {m,) : هذا الرمز يستخدم للبحث عن أي رمز يتألف من m إلى ما لانهاية من الرموز يعني عدد المرات التي تكرار فيها الرمز من m مرة إلى ما لانهاية 
الرمز يجب تحديده خارج اللامة وتحديدا قبلها 
m to infinie Repetitions 

• ( [...) : المعقوفتان يستخدمان للتحقق من وجود أحرف أو أرقام أو رموز،
وعملية التحقق أو البحث داخلهما تتم على التوالي
أي أنه يبحث عن الحرف الأول إدا لم يجده يمر للثاني إدا لم يجده يمر للثالث وهكدا ... 
  
• ( [...^) : إدا أضفنا هدا الرمز ^ داخل الرمز السابق فسيتحقق من عدم وجود  أحرف او أرقام أو رموز يعني عكس الرمز السابق ...
• يتم استخدام علامة الناقص ( - ) بين المعقوفتين للتحقق من وجود احد الاحرف بين حرفين أو للتحقق من وجود أي رقم بين رقمين ...

• ( [a-z) :  هذا الرمز يستخدم للتحقق من وجود أي حرف موجود من a إلى z (أحرف صغيرة) ...

• ( [A-Z) : هذا الرمز يستخدم للتحقق من وجود أي حرف موجود من A إلى Z (أحرف كبيرة) ...

• ( [0-9) :  هذا الرمز يستخدم للتحقق من وجود أي عدد موجود من 0 إلى 9 ...
• الرمز ( [\b] )  :  هذا الرمز يستخدم للبحث عن الرمز الذي يشير لسطر جديد  ...
literal backspace character (U+0008)
طريقة الاستخدام :
تستطيع الجمع بين الرموز السابقة لتكوين تعبير نمطي واحد
مثل : [a-zA-Z]*\s[0-9]
او ان نقوم بفصلها عن طريق المجموعات باستخدام الاقواس
([a-zA-Z])(*\s)([0-9])
كما ان كل مجموعة من المجموعات السابقة نستطيع استدعائها عن طريق الرمز $ . 

 أمثلة تطبيقية : 
سأبدأ بأمثلة في لغة c# وبإمكان أي عضو أن يطرح أمثلة بطريقته الخاصة لتعم الفائدة أكثر

cتدعم Regular expressions عن طريق namespace :
System.Text.RegularExpressions
 في هده الأمثلة تأكد من إضافتك لهده namespace :
using System.Text.RegularExpressions;

 داخل هده namespace توجد كلاس إسمها Regex
https://docs.microsoft.com/en-us/dotnet/api/system.text.regularexpressions.regex.-ctor?view=netframework-4.7.2#System_Text_RegularExpressions_Regex__ctor
داخل هده الكلاس توجد Methods
 Regex.Match()
https://msdn.microsoft.com/en-us/library/bk1x0726
Regex.IsMatch()
https://docs.microsoft.com/en-us/dotnet/api/system.text.regularexpressions.regex.ismatch?view=netframework-4.7.2
Regex.Matches()
https://msdn.microsoft.com/en-us/library/b49yw9s8
Regex.Replace()
https://docs.microsoft.com/en-us/dotnet/api/system.text.regularexpressions.regex.replace?redirectedfrom=MSDN&view=netframework-4.7.2#System_Text_RegularExpressions_Regex_Replace_System_String_System_String_System_String_
 Regex.ٍSplit()
https://docs.microsoft.com/en-us/dotnet/api/system.text.regularexpressions.regex.split?view=netframework-4.7.2
Match.NextMatch
https://docs.microsoft.com/en-us/dotnet/api/system.text.regularexpressions.match.nextmatch?view=netframework-4.7.2

سنعمل على هده الميتود  Regex.IsMatch() وهي من نوع Boolean ترجع قيمة True أو False
وتتكون من 4 عناصر input , pattern, options, matchTimeout 
سنستعمل في هده الأمثلة فقط عنصرين input و pattern وهما من نوع string


المثال الأول : سنتأكد من أن الكلمة تبدأ ب My

 النتيجة : True


وللتأكد من أن النص ينتهي ب gmail نكتب في pattern


 النتيجة : True
مثال 2 : نترك الكود كما في المثال السابق ونغير pattern
 
 النتيجة : False
ظهر False لأننا لم نحدد ما يوجد بين My و gmail
هل يوجد بينهما حروف ، أرقام أم رموز
First هي في الأصل حروف
سنضع الرمز الخاص بالتحقق من وجود أحرف وهو \w
سنضعه بينهما ونجرب
 
ظهر خطأ يخص Backslashes
هممم عند استعمالنا ل Regular expression في c# الموصى به أن نستعمل @ كلاحق في بداية pattern
-------------- 
When writing regular expression in C#, it is recommended that you use verbatim strings instead of regular strings.
Verbatim strings begin with a special prefix (@) and signal C# not to interpret backslashes and special metacharacters in the string,
allowing you to pass them through directly to the regular expression engine.
This means that a pattern like "\n\w" will not be interpreted and can be written as @"\n\w" instead of "\\n\\w" as in other languages, 
which is much easier to read.
------------ 
هكدا :
 النتيجة : False

لمادا ظهر False ولم يظهر True
لأن \w تتحقق من وجود فقط حرف واحد و First مكونة من أربعة حروف
إدن هل سنعمل هكدا :
 \w\w\w\w
بطبيعة الحال لا سنستعمل رمز + (لقرائة تعريفه إطلع فوق )

  النتيجة : True

مثال 3 : سنغير input
 
و نغير pattern

  النتيجة : True 
ظهر True لأن النقطة تتحقق من وجود أي رمز (characters) بما فيهم spaces
ما عدى الرمز الذي يشير لسطر جديد 
********************* 

بالنسبة للتمارين التطبيقية أنصحكم بهدا الموقع كبداية :
لا تحاول أن تقرأ الحل قبل أن تضع مئات المحاولات أمزح فقط بل الآلاف هههه 
  
روابط مهمة قد تفيدك :
W3schol https://www.w3schools.com/jsref/jsref_obj_regexp.asp
https://docs.microsoft.com/enus/previous-versions/ visualstudio/visual-studio- 2008/ae5bf541(v=vs.90) : Microsoft
https://regexper.com/
https://regexone.com/  Wiki  https://en.wikipedia.org/wiki/Regular_expression
https://regexone.com/references/csharp
JAVA https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/regex/Pattern.html 
 PHP http://php.net/manual/en/class.regexiterator.php 
 JavaScript : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions 
أي إستفسار أو أي شيء غير واضح المرجو طرحه.
\|/ حياكم الله. \|/ 
.*. بالتوفيق للجميع .*.
 أخوكم عبد السلام.
01:42 - 2019/02/28: آخر تغيير للنص بواسطة abdessalam kilya
عدد مرات تغيير النص: 5
abdessalam kilya
 15:30 - 02/09معلومات عن العضورد على الموضوع بإضافة نص هذه المشاركةأضف رد سريع بإقتباس لهذا الرد

مثال 4 : الرمز (x|y)
 
مثال 5 : التحقق من الإيميل
مثال 6 : كمثال نريد التحقق من بعض strings أنها عبارة عن مواقع
 
النتيجة :
بالنسبة لهدا المثال استعملت الأقواس ودلك لفصل كل جزء لوحده
فكما تلاحظون في الروابط فهناك من يوجد به http أو https أو لا توجد ..
أو من يتكون من www أو لا ..
ففي هده الحالة استعملت علامة التعجب ? التي نسيت أن أشرحها مع الرموز في الموضوع
Characters optional 
فدورها هو التأكد أو التحقق من وجود الرمز الدي يوجد قبلها وجدته أم لم تجده سيتم إكمال pattern
إدن نقول أن علامة التعجب تلغي الرمز الدي قبلها ترجعه optional
-هدا الرمز {w{3 يعني التحقق من وجود حرف w مكرر ثلاث مراة
بإمكان صياغة هدا المثال بعدة طرق وهده واحدة :
 
النتيجة :
 
أو :
 
النتيجة :
 

إدا كان أي استفسار أو أي غموض بخصوص pattern المرجو طرحه ...

البيوس والرنات المصاحبة عند الإقلاع

 

وَ نَــــعُوذُ بِالْلهِ تَعَالَى مِنْ شُــــرُورِ أَنْفُسِنَا وَ مِنْ سَيِّئَــــاتِ أَعْمَالِنَا
مَنْ يَـــهْدِهِ الْلهُ تَعَالَى فَلَا مُضِــــلَّ لَهُ، وَ مَنْ يُـضْلِلْ فَلَا هَــــادِىَ لَه

وَ أَشْــــــــــهَدُ أَلَّا إِلَهَ إِلَّا الْلهُ وَحْــــــدَهُ لَا شَــــــرِيكَ لَه
وَ أَشْـــهَدُ أَنَّ مُحَمَّداً عَبْدُهُ وَ رَسُولُهُ، صَلَّى الْلهُ عَلَيْهِ وَ آلِهِ وَ سَلَّمَ تَسْلِيمَاً كَثِيرَا.
.1اهو البيوس؟
إن كلمة بايوس تعنى باللغة الانجليزية (Basic Input/Output System) أى نظام الادخال والاخراج الاساسي
 
وهناك ثلاثة أنواع من البيوس هما AMI و AWARD و Phoenix كما انه عبارة عن شريحة الكترونية لا يخلو منها اى حاسوب سواء كان حاسوب شخصى و حاسوب محمول (لاب توب) وهذه الشرحة تتحكم فى جميع عناصر اللوحة الام الالكترونية ويقوم بعملية ألآقلاع (BOOTING)
 
وهى التاكد من سلامة اجزاء اللوحة الام للحاسوب وعند وجود اى تلف فى أى قطعة الكترونية من عناصر اللوحة الام يقوم البايوس
 
باصدار صافرات تحذير ليخبرنا باى جزء توكد المشكلة وسوف نستعرض فيما يلى انواع تللك الصافرات والتحذيرات.
2.كيف تعرف نوع البيوس الخاص بك ؟
يمكنك عزيزي العضو أو الزائر معرفة نوع البيوس الخاص بك بطريقتين
الأولى عند الإقلاع راقب أعلى يسار الشاشة حيث ستجد نوع البيوس الخاصة بك ، إن لم يتسنى لك الوقت لمشاهدتها فلا تقلق ، فعند اكتمال تشغيل الحاسوب قم بالتالي
Win+R 
ثم اكتب Dxdiag ثم ستشاهد مواصفات حاسوبك وفي الوسط ستجد BIOS وستجد معلوماتها أمامها

3. ماهي رنات البيوس ؟
الرنات الذي قد تسمعها فجأة عند تشغيل الحاسوب ولايقلع عبارة عن تحذير من الكرت الأم على أن هناك خلل في الهاردوير إما
من الذاكرة أو المعالج أو الكرت بصفة عامة ومكوناتها ، وقد تختلف عدد الرنات من 1 إلى 9 وقد تكون طويلة أو قصيرة.
4.كيف أعرف المشكلة بعدد الرنات ومالحل ؟
تختلف عدد الرنات بنوع  المشكلة و بنوع البيوس أغلبية الرنات تدل على ان المشكلة في الذاكرة الحية ( RAM )وسأضع لكم بعض المعلومات بتجديد من الأرشيف حول الرنات ودلالتها و الحل .
5.تجميعة الرنات ودلالتها وحلها حسب كل نوع بيوس
 الجداول في الأسفل تعطيك المعلومات التي تحتاجها في معرفة ماخطب جهازك عند سماع الرنات حسب كل نوع بيوس
AwardBios
الإرشادات الصوتية
دلالاتها
الحل
رنة طويلة + رنتين قصرتبن
خلل في نضام العرض
(بطاقة العرض)
راجع تركيب بطاقة العرض،في غالب الأحيان تكون غير مشبتة بطريقة سليمة
رنة واحدة
خلل في انتعاش الذاكرة
(RAM)
انزع شرائح الذاكرة و أعد تركيبها.إدا استمر المشكل استبدلبأخرى
رنات
خلل في الكيلوبايت الأربع من الذاكرة
انزع شرائح الذاكرة و أعد تركيبها.إذا استمر المشكل استبدلها
رنات
خلل بسبب الانتعاش
وجوب تغيير البطاقة الأم
5رنات
خلل في المعالج
انزع المعالج و أعده
6رنات
خلل في الملمس
انتبه الى الملمس قد تكون إحدى الازرار مضغوطة بشكل مستمر
8رنات
العرض متعذر
انزع بطاقة العرض وأعد تركيبها(قم بالشيء نفسه بالنسبة لذاكرتها) إذا استمر المشكل غير بطاقة العرض
 AmiBios
الإرشادات الصوتية
دلالاتها
الحل
رنة واحدة قصيرة
خلل في تشغيل
(RAM)
إنزع شرائح الذاكرة و أعد تركيبها.إذا استمر المشكل استبدلها باخرى
رنتان قصيرتان
خلل في تكافؤ الكيلوبايت الأربع والستين الأولى منالذاكرة
إنزع شرائح الذاكرة و أعد تركيبها.إذا استمر المشكل استبدلها باخرى
رنات قصيرة
إخفاق في الكيلوبايت الأربع والستين الأولى من الذاكرة
إنزع شرائح الذاكرة و أعد تركيبها.إذا استمر المشكل استبدلها باخرى
رنات قصيرة
إخفاق في الكيلوبايت الأربع والستين الأولى من الذاكرة أو إخفاق فيالمؤقت
(time)
عيب في البطاقة الأم يجب استبذالها
رنات قصيرة
خلل في المعالج
إنزع المعالج و أعد تركيبه
رنات قصيرة
عيب في الملمس
إستبدل الملمس
رنات قصيرة
خلل في صيغة الافتراضية
(mode virtuel)
عيب في البطاقة الأم يجب استبذالها
رنات قصيرة
عيب في العرض أو فيالذاكرة
انزع بطاقة العرض ة أعدها.وكدا الداكرة
ادا استمر المشكل استبدل تلك الاولى
رنات قصيرة
خلل في الذاكرة الميتة
في البيوس (rom)
انزع دارة dip في البيوس و أعدها
10 رنات قصيرة
خلل في الوصول إلى ذاكرةCMOS
عيب في البطاقة الأم يجب استبذالها
11 رنات قصيرة
خلل في الذاكرة المخفية الخارجية-المستوى الثاني
راجع الداكرة المخفية
رنة طويلة+رنتين قصيرتين
خلل في نظام العرض (بطاقة العرض)
راجع تركيب بطاقة العرض .
Phoenix Bios
الإرشادات الصوتية
دلالاتها
الحل
3-1-1
خلل في الوصول الىالداكرة
عيب في البطاقة الام يجب استبدالها
4-1-1
خلل في الوصول الىالذاكرة
عيب في البطاقة الام يجب استبدالها
1-3-1
خلل في انتعاش الداكرة
انزع شرائح الذاكرة و أعد نركيبها.إذا استمر المشكل استبدلها باخرى
2-4-1
خلل في تكافؤ الكيلوبايت الاربع و الستين الاولى من الداكرة
انزع شرائح الذاكرة و اعد تركيبها إذا استمر المشكل استبدلها باخرى
3-3-1
إخفاق في الكيلوبايتالاربع و الستين الاولى من الداكرة
انزع شرائح الذاكرة و اعد تركيبها إذا استمر المشكل استبدلها باخرى
4-3-1
إخفاق في الكيلوبايتالاربع و الستين الاولى من الداكرة
انزع شرائح الذاكرة و اعد تركيبها إذا استمر المشكل استبدلها باخرى
4-2-3
عيب في الملمس
استبدل الملمس
1-1-3
خلل في دارة DMA
استبدل البطاقة الام
2-1-3
خلل في دارة DMA
استبدل البطاقة الام
4-3-3
خلل في نطام العرضبطاقة العرض
راجع تركيب بطاقة العرض

Phoenix V4 Release 6 Bios 
الإرشادات الصوتية
دلالاتها
الحل
3-2-2-1
خلل في مجموع البيوس
استبدل بطارية البطاقة الام
1-1-3-1
خلل في انتعاش الداكرة
أجعل اعدادات البيوس على FAIL
3-1-3-1
خلل في الملمس
استبدل الملمس
1-4-3-1
إخفاق في الكيلوات512 الاولى من الداكرة
انزع شرائح الذاكرة و اعد تركيبها إذا استمر المشكل استبدلها باخرى
3-4-3-1
خلل في الكيلوات512الاولى من الداكرة
انزع شرائح الذاكرة و اعد تركيبها إذا استمر المشكل استبدلها باخرى


6.خلاصة
أغلبية الرنات تدل على ان هناك مشكل في الذاكرة الحية و لكل جهاز عمر محدد يجب المحافظة على الأجهزة والاعتناء بها وعدم الاستعمال المفرط لها مما قد يسبب انتفاخ في المكثفات و قد تحدث عواقب لايحمد عقباها



7.كلمة أخيرةفي الأخير أتقدم بشكري لطاقم منتدى مشاكل الحاسب والشبكات
خاصة
 السيد نائب المراقب محمد الذي يقدم مايعجز عنه الكثير وللأخ ثروت المراقب

 والأخ سفيان ( أبوايناس ومحمد) وطاقم العمل للمنتدى دون نسيان المشرف محمد monix99

تقبلو تحيات أخوكم في الله شكيب Dimitri Rascalov  
والسلام عليكم

Image associée