تعبير نمطي

من ويكيبيديا، الموسوعة الحرة
اذهب إلى: تصفح، ‏ ابحث

التعابير النمطية (بالإنكليزية: Regular expression) هي أسلوب لوصف النصوص والتعرف عليها بطريق وصف مكوناتها من رموز، ووصف علاقات تلك الرموز من توال وتكرار، وذلك بكيفية نظامية يمكن لخوارزمية أن تفسرها وتطبقها على نص مُعطى لاستخراج الجزء المنطبق عليه التعبير النمطي.

تستخدم التعابير النمطية في الحوسبة لمعالجة النصوص وفي مولدات مفسرات لغات البرمجة ولتدقيق مُدخلات البرمجيات، وتوجد تطبيقات لها في معظم لغات البرمجة.

الأحرف العادية[عدل]

يمكن استخدام الأحرف العادية في التعبيرات المنتظمة، للبحث عن كلمة : فصل ، فكل ما عليك هو كتابة الكلمة في مربع البحث وسيتم البحث عنها.

جميع الأحرف يمكن البحث عنها مباشرة، فمثلا لكي نبحث عن الحرف س ، فإنا نكتب س مجردة فيبحث عنها يستثنى من ذلك 11 رمزا هي (الرموز الخاصة)، وهي تلك الرموز التي لها معان خاصة في التعبيرات القياسية وهي :

  • [ : معقوفة فاتحة
  • \ :
  • ^ : بداية الصفحة.
  • $ : علامة دولار. نهاية الصفحة.
  • . : نقطة. أي شيء عدا فاصل الأسطر.
  • | : عمود عمودي.
  •  ? : علامة استفهام.
  • * : علامة نجمة.
  • + : علامة زائد.
  • ( : قوس فاتح.
  • ) : قوس غالق.

للبحث عن أي حرف غير الـ 11 السابقة، اكتب الحرف مباشرة. أما للبحث عن رمز من هذه الرموز الـ 11 فينبغي أن توضع قبله العلامة \ وإلا فسيكون للرمز معناه الخاص .. فمثلا : لكي تبحث عن 1+1=2

ينبغي أن تكتب التعبير الآتي

1\+1=2

لاحظ، وضعنا العلامة \ قبل حرف + لأنه من الرموز الخاصة ، ونحن هنا لا نريد معناه الخاص، بل نريد البحث عنه كما هو.

فئات الأحرف[عدل]

إذا وضعت عددا من الأحرف داخل المعقوفين [ ]، فهذا ما يسمى بفئات الأحرف. مثلا [ةرك].

ومعناها أنك تريد حرفا واحدا من هذه الفئة. تذكر: حرفا واحدا، فالبحث عن فصل يجد الكلمة كلها أي الحروف الثلاثة فصل متوالية أما البحث عن [فصل] فهو يجد حرفا واحدا من الثلاثة، ف أو ص أو ل وليس الكلمة كلها.

يمكن وضع مجالات داخل الأقواس، مثلا [0-9] يبحث عن أي رقم من صفر إلى 9 لكنه يجد رقما واحد مثل 5 وليس مثل 549.

مهما وضعت داخل قوس المجموعة، تذكر أنه يمثل رمزا واحدا، فمثلا

[0-9a-zA-Z]

يجد أي حرف أجنبي كبير أو صغير أو رقم، لكنه يعود بواحد فقط من هؤلاء (أول واحد يصادفه).

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

من أهم استخدامات المجموعات هي : إيجاد الكلمة حتى لو بها خطأ إملائي فمثلا عندما تبحث عن [أا]حمد ، فمعنى هذا أنك تريد أن تبحث عن أحمد أو احمد، سواء أكان هذا أم هذا، فكلاهما سيعتبر نتيجة صحيحة.

- تطبيق : هل يمكن أن تبحث عن [آإا]حمد وتستبدله بـ أحمد ، لتصحيح الخطأ الإملائي

- الجواب : لا ، لأن أحمد صحيحة كاسم علم و احمد أيضا صحيحة كفعل أمر ثلاثي همزته همزة وصل كقولك : احمد الله

لكن : يمكن مثلا استبدال الإمام [آإا]حمد بـ الإمام أحمد ، أو [آإا]حمد بن حنبل بـ أحمد بن حنبل

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

الفئات المنفية[عدل]

إذا وضعت هذه العلامة ^ قبل الأحرف داخل المعكوفين هكذا [^] ، فمعناه أنك تريد أي شيء ما عدا هذه الأحرف ، مثلا [ةرك^]

وكما سبق أيضا فإنها تجد حرفا واحدا بشرط ألا يكون في المجموعة المنفية، فالمثال السابق[ةرك^] يجد ب أو ت أو ج أو ... أي حرف سوى ةرك.

بعض الرموز الخاصة[عدل]

نذكر هنا بعضا من الرموز الخاصة ومعانيها ، وغالبها ستجده في القوائم لإدراجه بسهولة

\s أي مسافة بيضاء ، وهي كل ما لا ترى له جرما مطبوعا ، مثل : المسافة و فاصل الأسطر (زر Enter) ، ونحوها

\S أي شيء بخلاف المسافة البيضاء

\d أي رقم 0-9

\D أي شيء ليس رقما

\r\n فاصل الأسطر (= زر Enter)

المواضع[عدل]

وهي لا تقابل حرفا معينا بل تقابل موضعا مثلا : أول الصفحة ، أول السطر ...

فمثلا، للبحث عن كلمة فصل بشرط أن تكون في أول الصفحة، اكتب ^فصل.

لتبحث عن كلمة في أول السطر مثلا، يمكن استعمال فاصل الأسطر قبلها، لكنه لن يجد الكلمة لو كانت في أول الصفحة (مع أنها في بداية السطر) ، لأنه ليس قبلها فاصل أسطر ، لهذا تجد في القوائم - كمحاولة لحل هذه المشكلة -  :

- بداية السطر : وهو يقوم بإدراج التعبير (?:^|\r\n) وهو يعني بداية السطر(أو بداية الصفحة)

- نهاية السطر  : وهو يقوم بإدراج التعبير (?:$|\r\n) وهو يعني نهاية السطر (أو نهاية الصفحة)

مراجع[عدل]