التعبير المنتظم هو عبارة عن مجموعة من الرموز وتسمى Atoms هذه الرموز هي التي تحدد عمل المحرك، وهي عبارة عن نوعان:
الرموز الحرفية Literal Charactersالرموز الحرفية هي الأحرف العادية مثل abc والأرقام وكل ما هو يندرج تحت الترميز ASCII والتي يتم البحث عنها حرفياً ولاتغيير من آداء المحرك. فهي في شكلها البسيط أحرف عادية مثل /a/، حيث سيقوم هذا النمط بالبحث عن أول ظهور للحرف a داخل نص. فإذا كنت تبحث داخل النص Jack is a boy، فسيتم مطابقة a بعد J و a قبل boy. أو عند البحث عن cat داخل الجملة About cats and dogs فهذا يعني أنك تطلب البحث عن أول حدوث للحرف c متبوعاً مباشرة بالحرف a ثم t. إلا إذا قمت بتغيير ذلك في إعدادات محرك البحث Regex modifiers ونتحدث عنها في موضوع منفصل.
[highlight background=”” color=””]التعبيرات المنتظمة حساسة لحالة الحرف، فإن cat لا تساوي Cat[/highlight]
الرموز الخاصةكما قلنا أن الرموز الحرفية هي ما يتم البحث عنه حرفياً ولا يغير من أداء المحرك أو طريقة البحث، ونظرًا لأننا نريد أن نفعل أكثر من مجرد البحث عن نصوص حرفية ، نحتاج إلى حجز بعض الأحرف للاستخدام الخاص Special characters وتسمى أيضاً metacharacters. هذه الرموز الخاصة لها معنى لدى المحرك وتقوم بتوجيهه للتحكم في عملية البحث. هناك 12 رمزاً لهم معاني خاصة:
[ \ ^ $ . | ? * + ( ) {مثلاً عند كتابة نمط مثل [a-z] فأنا أطلب من المحرك أن يقوم بالبحث أن أي حرف صفير من a إلى z وهذا يخص موضوع يسمى فئات الرموز Characters classes (نتحدث عنه في موضوع منفصل) أو عند كتابة النمط بهذا الشكل ab+c فهذا يعني البحث عن a متبوعة بـ b مع إمكانية أن تكون b واحدة أو أكثر ثم c وهذا يسمى تحديد الكميات Regex quantifiers (نتحدث عنه في موضوع منفصل) وغيرها من الأساليب والتنقنيات التي يستطيع محرك التعبير المنتظم تنفيذها باستخدام الرموز الخاصة بالتكامل مع الرموز الحرفية لإجراء عمليات البحث المعقدة.
وإذا أردت استخدام أي من الرموز الخاصة كرمز حرفي بهدف البحث عنه فيجب عمل تخطي له Regex escape. فإذا كنت تريد البحث عن 2 = 1+1 يجب عليك إضافة \ قبل + هكذا 1\+1=2 ، وإلا بدون \ فيكون للعلامة + معنى آخر(أي أصبحت تحديد للكمية).
معظم محركات التعبيرات المنتظمة تتعامل مع القوس المجعد { كرمزحرفي ، ما لم تكن جزءًا من تحديد كمية مثل {1،3} . لذلك، لا تحتاج إلى تخطيها، لكن يمكنك القيام بذلك إذا كنت تريد.
يجب ألا يتم تخطي أي من الأحرف العادية باستخدام شرطة مائلة للخلف. وهذا لأن \ هو أيضًا رمز خاص، ويكون له معنى عند جمعه مع بعض الأحرف مثل \d وهو أحد الرموز المختصرة Regex shorthand (نتحدث عنه في موضوع منفصل) وتقوم بمطابقة رقم واحد من 0 إلى 9 أو \b والتي تقوم بمطابقة حدود الكلمات Word boundaries. وغيرها من الرموز نتحدث عنها في مواضيع أخرى.
أيضاً تعتبر ] حرفاً عادياً إذا لم تكن جزء من فئة الرموز Characters classes، لكن هناك قواعد أخرى خاصة بذلك، نتحدث عنها في الموضوع الخاص بفئات الرموز Characters classes.
مثالاً نريد البحث عن كل بريد إلكتروني في نص ما، فنكتب نمط مثل ^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$ ، لاحظ النمط مكون من مجموعة من الرموز والأحرف التي يستطيع من خلالها مطابقة بريد إلكتروني (مثل: [ien]any_email123@gmail.com[/ien]) وغيره من الأشكال، وأيضاً إذا كنت قوي الملاحظة ستجد أنه عند البحث عن النقطة . التي توجد في أي إيميل [ien]any_email123@gmail.com[/ien] ستجد أنه عمل تخطي لها في النمط باستخدام \ لأنه يريد البحث عنها كحرف عادي وليس كرمز خاص بالتعبير المنتظم.

