المكتبة الشاملة - التعبيرات القياسية

التعبيرات القياسية Regular Expressions

تمهيد :

  • في الإصدار الثالث تم استخدام التعبيرات القياسية في البحث والاستبدال، وفي استخلاص العناوين من داخل النص

  • والتعبيرات القياسية هي (لغة) مستقلة، وإمكاناتها قوية جدا ، لا يمكن شرحها بالتفصيل في هذه العجالة ، وهناك مراجع متخصصة عنها ..

  • لكن يمكن أن نقول باختصار : أنها أداة تستخدم لوصف أي (نموذج) معين من النص ، وأبادر بذكر مثال عملي لتصور الأمر : ففي كتاب (الأسئلة والأجوبة الفقهية) للشيخ السلمان -رحمه الله- ، تجد السؤال دائما يكون على هذا النمط :
    س153: ما حكم تعجيل صلاة العصر؟ وما دليل الحكم؟
    ويمكن وصف النمط السابق كالتالي :
    - يبدأ من أول السطر
    - ثم قد يكون هناك مسافة أو أكثر
    - ثم حرف س
    - ثم قد يكون هناك مسافة أو أكثر
    - ثم رقم
    - ثم بقية الكلام إلى نهاية السطر
    فلو وجدنا طريقة نخبر بها الشاملة بهذا النمط بكل تفاصيله ودقته ، ثم نجعل كل نص ينطبق عليه هذا النمط ، عنوانا ، لأنجزنا في دقيقة واحدة ما يمكن أن ننجزه في عدة أيام من العمل اليدوي .. وهذا هو السبب وراء إضافة التعبيرات القياسية للشاملة ، إذ أن التعبيرات القياسية بقوتها وشمولها ، تمكنك من وصف أي (نموذج) من النص

  • وهذا (النموذج) يمكنك أن تستخدمه في استخلاص العناوين - كما سبق - أو في البحث فقط ، أو في البحث والاستبدال

  • وتجد هنا إلمامة سريعة بهذه التعبيرات القياسية، وكله استقاء  وتطبيق لبعض ما ورد في هذا الموقع http://www.regular-expressions.info وهو من أجود المواقع التي تناولت هذا الموضوع

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


    والوظائف المتاحة تحت السهم الصغير المذكور ، ستتضح أثناء الشرح إن شاء الله


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

  • بلا شك يمكنك استخدام الأحرف العادية في التعبيرات المنتظمة ، لكي تبحث عن كلمة : فصل ، فكل ما عليك هو كتابة الكلمة في مربع البحث وسيتم البحث عنها
  • جميع الأحرف يمكن البحث عنها مباشرة ، فمثلا في المثال السابق :  س153: ما حكم تعجيل صلاة العصر؟ وما دليل الحكم؟  لكي نبحث عن الحرف س ، فإنا نكتب س مجردة فيبحث عنها
  • يستثنى من ذلك 11 رمزا هي (الرموز الخاصة) ، وهي تلك الرموز التي لها معان خاصة في التعبيرات القياسية وهي [ \ ^  $  . | ? * + ( )
  • لكي تبحث عن أي حرف غير الـ 11 السابقة ، اكتب الحرف مباشرة ، أما لكي تبحث عن رمز من هذه الرموز الـ 11 فينبغي أن تضع  قبله العلامة \ وإلا فسيكون للرمز معناه الخاص (تأتي معاني هذه الرموز إن شاء الله)  .. فمثلا : لكي تبحث عن

    1+1=2

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

    1\+1=2

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


فئات الأحرف

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

    [0-9a-zA-Z]

    يجد أي حرف أجنبي كبير أو صغير أو رقم ، لكنه يعود بواحد فقط من هؤلاء (أول واحد يصادفه)
  • لراحتك : هناك في القوائم (انظر صورتها فيما سبق) أوامر لإدراج : حرف عربي ، تشكيل ، حرف عربي أو تشكيل ، حرف أجنبي .. وهي كلها كتطبيق على استعمال فئات الأحرف فهي عبارة عن تعبيرات قياسية جاهزة معدة مسبقا ، تدرج في مربع النص بمجرد اختيار الأمر
  • من أهم استخدامات المجموعات هي : إيجاد الكلمة حتى لو بها خطأ إملائي فمثلا عندما تبحث عن [أا]حمد ، فمعنى هذا أنك تريد أن تبحث عن أحمد أو احمد ، سواء أكان هذا أم هذا، فكلاهما سيعتبر نتيجة صحيحة
    - تطبيق : هل يمكن أن تبحث عن
    [آإا]حمد وتستبدله بـ أحمد ، لتصحيح الخطأ الإملائي
    - الجواب : لا ، لأن
    أحمد صحيحة كاسم علم و احمد أيضا صحيحة كفعل أمر ثلاثي همزته همزة وصل كقولك : احمد الله
     
    لكن : يمكن مثلا استبدال الإمام [آإا]حمد بـ الإمام أحمد ، أو [آإا]حمد بن حنبل بـ أحمد بن حنبل
  • ما سبق كان مثالا فقط، ومع التفكير ، ستجد أن هناك ما لا يحصى من الاستخدامات للتعبيرات القياسية، يمكن استخدامها لإصلاح كثير من الأخطاء المتكررة في النصوص

الفئات المنفية

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

بعض الرموز الخاصة :

  • نذكر هنا بعضا من الرموز الخاصة ، ومعانيها ، وغالبها ستجده في القوائم لإدراجه بسهولة
    \s
    \S
     أي مسافة بيضاء ، وهي كل ما لا ترى له جرما مطبوعا ، مثل : المسافة و فاصل الأسطر (زر Enter) ، ونحوها
     أي شيء بخلاف المسافة البيضاء
    \d
    \D
     أي رقم 0-9
     أي شيء ليس رقما
    \r\n  
    .
     فاصل الأسطر (= زر Enter)
     أي شيء عدا فاصل الأسطر

المواضع

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

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

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

معامل : أو

  • هذا الرمز | يساوي المعامل أو ، فلو كتبت الكتاب|الباب|الفصل ، فستأتيك النتيجة سواء أكانت الكتاب أم الباب أم الفصل
  • لاحظ أنه لا يوجد معامل و ، بل مجرد كتابتك للأحرف متوالية تعني أنك تريدها جميعا وبهذا الترتيب ، مثلا لو كتبت الإمام البخاري ، فمعناه أنك تريد هذه الأحرف بهذا الترتيب وليس بعضا منها فقط، فستأتيك النتيجة فقط إذا كانت الإمام البخاري
  • تنبيه : لتحقق الرمز | ينبغي أن يجد (كل ما على يمينه) أو (كل ما على يساره)
    - لاحظ الخطأ المشهور الآتي : لو كتبت
    الكتاب|الباب|الفصل الأول ، فهل تظن أنه ستأتيك النتيجة سواء أكانت الكتاب الأول أم الباب الأول أم الفصل الأول
    لا، ليس كذلك ، بل سيأتي إما الفصل الأول وإما الباب وإما الكتاب
    لتحصل على النتيجة المطلوبة، اكتب
    (الكتاب|الباب|الفصل) الأول ، فهنا ستأتيك النتيجة سواء أكانت الكتاب الأول أم الباب الأول أم الفصل الأول
    وبقليل من التأمل ، يظهر لك الفرق بين العبارتين الكتاب|الباب|الفصل الأول و (الكتاب|الباب|الفصل) الأول

التكرار

  • المراد بها تكرار النتيجة السابقة عددا من المرات  ...
    ?  لتكرار ما سبق صفر أو مرة واحدة ، بمعنى تجعل ما قبله اختياريا، فلو كتبت رجالا? فسيجد رجال أو رجالا ، لأن آخر رمز وهو ا قد وضعت بعده ? فأصبح اختياريا
    *  لتكرار ما سبق صفر أو أكثر ، فستخرج النتيجة سواء أكان غير موجودا أم موجودا مرة واحدة أم أكثر فلو كتبت   س\s* 12 فستجد النتيجة سواء كانت س12 (بدون مسافات) أم س 12 (بمسافة) أم س   12 (أكثر من مسافة)
    +  لتكرار السابق مرة واحدة أو أكثر ، فلو كتبت  \d+ معناه تريد رقما أو أكثر فستجد النتيجة سواء أكانت 5 أم 76 أم 834 أم 768045  وهكذا

    {3}

     لتكرار السابق 3 مرات .. طبعا يمكنك استبدال الرقم 3 بأي رقم تريده

    {2,5}

     لتكرار السابق من 2 إلى 5 مرة .   طبعا يمكنك استبدال الرقمين 2 ، 5  بأي أرقام  تريدها

    {,7}

     لتكرار السابق أي عدد من المرات أقل من أو يساوي 7 .  طبعا يمكنك استبدال الرقم 7 بأي رقم تريده

    {3,}

      لتكرار السابق أي عدد من المرات أكثر من أو يساوي 3 .  طبعا يمكنك استبدال الرقم 7 بأي رقم تريده

     

  • لاحظ : معامل  التكرار ينطبق على ما يسبقه مباشرة فلو كتبت الفصل الثاني? فإن الحرف الوحيد الاختياري هنا هو ي ، لكن لكي تجعل كلمة الثاني كلها اختيارية ، اكتب الفصل( الثاني)? فهنا كلمة الفصل إجبارية ، ثم (المسافة وكلمة الثاني) اختيارية، وبالتالي سيجد النتيجة سواء أكانت الفصل أم الفصل الثاني
  • القناعة والطمع : معاملات التكرار كلها بطبيعتها (طماعة) عند البحث ، بمعنى :
    لو أن عندي النص هكذا: 
    6794 - حديث أبي هريرة ...
    وأنت تريد  أن تبحث عن رقم فأكثر فكتبت
    \d+ فهل سيجد 6 أم 67 أم 679 أم 6794 ، الجواب أنه طماع بطبعه فسيجد أكثر ما يمكنه وهو 6794
    - يمكنك أن تجعل معاملات التكرار كلها (قنوعة) بأن تضع بعدها علامة استفهام ، فتصبح المعاملات السابقة (في الجدول السابق) ، بهذا الشكل على التوالي

    ?? , *? , +? , {3}? , {2,5}? , {,7}? , {3,}? 

    وبالتالي : في المثال السابق 6794 - حديث أبي هريرة ...  لو بحثت عن

    \d+?

    سيقنع بأقل ما يفي بشرطه وهو
    6 ويكتفي به ، فتكون نتيجة البحث هي 6

التجمعات والعلامات المرجعية

  • لقد استخدمنا التجمعات بالفعل فيما مضى، تذكر مثالين سابقين
    -  الفرق بين العبارتين
    الكتاب|الباب|الفصل الأول و (الكتاب|الباب|الفصل) الأول
    -  الفرق بين العبارتين الفصل الثاني? و الفصل( الثاني)?
  • إذن وظيفة أقواس المجموعة ظاهرة، وهي جعل ما بين الأقواس كوحدة واحدة بحيث تنطبق عليها المعاملات (معامل أو ومعاملات التكرار)  كوحدة واحدة
  • لكن هناك وظيفة أخرى هامة جدا للأقواس التجميعية، وهي أن كل قوس تجميعي في التعبير المنتظم الذي تكتبه ، يمكن بعد ذلك الرجوع لما طابقه هذا القوس وما داخله
    وأبادر بذكر مثال : نفترض أنك تريد عمل استبدال على هذا النحو (والمثال للتوضيح فقط)
     
    باب من اسمه سعد من الصحابة  تحولها إلى : سعد رضي الله عنه
     
    باب من اسمه أسيد من الصحابة   تحولها إلى : أسيد رضي الله عنه    وهكذا
    - وقبل أن تفكر في الحل السيئ أحذرك منه : وهو أن تستبدل (باب من اسمه) بـ لا شيء ، وتستبدل (من الصحابة) بـ (رضي الله عنه) ، وذلك لأن هذا سيستبدل كل (باب من اسمه) حتى لو كان في مثل (باب من اسمه حسن من التابعين)، وكل (من الصحابة) حتى لو كانت في مثل (وهو معدود من الصحابة في قول الجمهور) ، فهذا سيفسد النص ولهذا فهو مرفوض
    - الحل المنطقي أن نحصل على هذا النموذج بتمامه ، أعني (
    باب من اسمه فلان من الصحابة) ثم نعرف من (فلان) هذا ، ثم نستبدله بـ (فلان رضي الله عنه) .. وهذا دور العلامات المرجعية
    - ببساطة سنكتب التعبير التالي
    باب من اسمه(.+)من الصحابة [في خانة البحث] ونضع في خانة الاستبدال $1 رضي الله عنه
    - الذي حدث هنا أن البرنامج بحث عن
    باب من اسمه فوجدها ، ثم بحث عن .+ ومعناها أي رمز سوى فاصل الأسطر مكرر مرة أو أكثر ، فوجد مقابلها سعد مثلا ، ولأنها أول علامة مرجعية فقد أخذت الرقم 1 ثم بحث عن من الصحابة فوجدها، فعندما تكتب في الاستبدال $1 رضي الله عنه ، سيضع مكان $1 أول مجموعة وهي - هنا - سعد ، فتكون النتيجة : سعد رضي الله عنه .. طبعا يمكن استخدام أكثر من مجموعة في التعبير الواحد وستكون المجموعة الثانية برقم 2 والثالثة برقم 3 وهكذا ..أرجو أن تكون الفكرة واضحة..

بشرط أن يكون بعده

  • إلى هنا قد وصلنا لدرجة كافية من التعقيد فسأحاول تبسيط هذه النقطة الأخيرة
    - أتدري ما الفرق بين أن تبحث عن
    أحمد بن حنبل وأن تبحث عن أحمد بشرط أن يكون بعده بن حنبل
    - الفرق هو أن في الحالة الأولى ناتج البحث هو
    أحمد بن حنبل ، أما في الثانية فتاتج البحث هو أحمد فقط لكنه لن يخرج إلا إن كان بعده بن حنبل
    - تظهر الفائدة عند الاستبدال ، فلو استبدلت ناتج البحث بـ
    الإمام أحمد ، ففي الحالة الأولى سيكون ناتج الاستبدال الإمام أحمد ، وفي الثانية سيكون الناتج الإمام أحمد بن حنبل
  • تدعم التعبيرات القياسية، هذه الخاصية القوية إيجابا وسلبا ، بمعنى:
    -
     يمكنك استخدام : يشترط أن يكون بعده كذا
    (?=)
    - ويمكنك استخدام : يشترط ألا يكون بعده كذا
    (?!)
  • نعود لمثالنا  السابق:
    -
     الحالة الأولى (لتبحث عن أحمد بن حنبل)
    تكتب هكذا أحمد بن حنبل
    - والثانية (لتبحث عن أحمد بشرط أن يكون بعده بن حنبل) تكتب
    هكذا أحمد(?= بن حنبل)
  • مثلا q(?=u) معناها حرف q يشترط أن يكون بعده u فتجد مثلا الـ q في quickly ولا تجدها Iraq
  • بالمثل q(?!u) معناها حرف q بشرط ألا يكون بعده u  فتجد الـ q  في Iraq ولا تجدها في quickly
  • إذن  ما الفرق بين q[^u] وبين  q(?!u) إذا طبق كلاهما على كلمة Iraq
    -
    الأولى : معناها
    q بعدها حرف فعلا ، لكنه ليس u ، ولهذا فلن تجد شيئا في Iraq  ، لأن الـ q فيها ليس بعدها حرف أصلا
    - الثانية : معناها
    q فقط بشرط ألا يكون بعدها u وبالتالي فإنها تجد الـ q في Iraq لأن الشرط قد تحقق
  • تنبيه : هذه الأقواس ليست أقواس مجموعة ولكنها أقواس اشتراط ، لهذا فهي لا تدخل في عد أقواس المجموعات السابق ذكره في الفقرة السابقة. لو أردت الرجوع بقيمة الاشتراط لاستخدامها فيما بعد ، ضع الشرط نفسه داخل قوس مجموعة ، فمثلا لو كتبت عام (?=(\d+)) ، فمعناها أنك تبحث عن كلمة عام بشرط أن يكون بعدها رقم فأكثر ، مثلا عام 1413 ، ويعود قوس المجموعة بقيمة الرقم \d+ وهي 1413 في هذا المثال
  • تنبيه آخر : لعلك لاحظت في المثال أحمد(?= بن حنبل) أن ما وضع داخل قوس الاشتراط (?=) وهو بن حنبل أصبح كله شرطا وليس أي حرف منه
    - إذن : ما الحل لو أني أريد أن أبحث عن كذا بشرط ألا يكون بعده أي حرف من هذه الحروف أو أي كلمة من هذه الكلمات
    -الإجابة مما تم ذكره في الفقرات السابقة. هل تذكر قوس الفئة
    [ ] والذي نبهنا فيه كثيرا أنه يعود برمز واحد فقط مما داخله (أيّ رمز) فإنك لو كتبت
    (?=[ةرك]) ، فمعنى هذه العبارة يشترط أن يكون بعده أي حرف من الثلاثة ة أو ر أو ك
  • تمرين وجوابه : ما معنى التعبير سفيان(?! الثوري| بن عيينة)
    - الجواب  : معناه  ابحث عن
    سفيان بشرط ألا يكون بعده الثوري أو بن عيينة ، وبالتالي فهذا التعبير يجد سفيان ، في سفيان بن حرب ، ولا يجده في سفيان الثوري .. إن لم تكن تعرف لماذا ، راجع فقرة 
    معامل : أو فيما سبق

أمثلة تطبيقية

نأتي الآن لبعض الأمثلة العملية وشرحها ، لنعرف كيف يمكن أن نستفيد مما سبق

  • مثال 1 : نبدأ بالمثال الذي ذكرناه أولا
    المطلوب : كل ما كان على هذا النمط
    س153: ما حكم تعجيل صلاة العصر؟ وما دليل الحكم؟ نجعله عنوانا
    نصف هذا النمط بالتعبير :
    (?:^|\r\n)\s*س\s*\d+.+
    (?:^|\r\n)   لنبدأ من أول السطر

    \s*

     احتمال وجود مسافة أو أكثر (لتكرر هذا الرمز كثيرا، تجده في القوائم، رغم أنه أصلا مركب من رمزين \s وتعني مسافة، و * وتعني تكرار السابق صفر أو أكثر ، وهذا يتكرر كثيرا لأنه أحيانا تكون هناك مسافة أو أكثر أو لا تكون هناك مسافة على الإطلاق)
    س  حرف س

    \s*

     احتمال وجود مسافة أو أكثر

    \d

     رقم واحد مثلا 5 ، 7 ، .. أيّ رقم واحد
    +  تكرار السابق (أي الرقم الواحد) مرة أو أكثر ، فتكون النتيجة أي عدد ، مثلا 34 ، 567 ، 7 ، ...
    .   أي شيء بخلاف فاصل الأسطر (حتى لو السؤال طويل ومقسم على عدة أسطر فهذه الأسطر ليس بينها فاصل أي ليس بينها زر (Enter)
    +  تكرار السابق (أي شيء بخلاف فاصل الأسطر) مرة أو أكثر ، فتكون النتيجة بقية السطر كله

    بقي الآن أن نبحث عن كل نص على هذا الشكل ونضعه عنوانا في المستوى 2 ، من شاشة تحرير كتاب ، اضغط زر التبديل   حتى تصل لنظام استخلاص العناوين بالتعبيرات المنتظمة ، وهو الآتي   اكتب التعبير في المربع الأول ، والرقم 2 (رقم المستوى) في المربع الثاني ثم اضغط الزر وانتظر النتيجة
    تنبيه : استخدام التعبيرات القياسية هنا (في استخلاص العناوين) يتجاهل التشكيل (التشكيل فقط وليس أشكال الهمزات أو غيرها) ، وهذه خدمة خاصة بالشاملة ، وهي مضافة فقط عند استخلاص العناوين، أما استخدام التعبيرات القياسية في البحث والاستبدال (في الشاملة) ، فلا يتجاهل أي شيء لا التشكيل ولا غيره
     

  • مثال 2 : لحذف السطر الفارغ أو أكثر من أول الصفحة
    أحيانا يكون هناك سطر فارغ أو أكثر في بداية الصفحة ، لإصلاح هذه المشكلة استخدم البحث والاستبدال باستخدام التعبيرات القياسية .. ضع في مربع البحث التعبير الآتي
    ^(\r\n)+ واترك مربع الاستبدال فارغا فيمحو ذلك كل الأسطر الفارغة في أول الصفحات
    ^   لنبدأ من أول الصفحة

    (

     قوس مجموعة
    \r\n  فاصل أسطر، وهو في الواقع مكون من رمزين مختلفين متتاليين \r ثم \n

    (

     إغلاق قوس المجموعة

    +

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

    بالمثل ، لحذف الأسطر الفارغة من آخر الصفحة ، استخدم التعبير في البحث، واترك مربع الاستبدال فارغا (\r\n)+$
     

  • مثال 3 : حذف الحواشي
    - ذكر لي بعض الأخوة مرة أنه يريد حذف الحواشي من كتاب معين لأنه لا يحتاجها وهي تسبب له إرباكا .. وسواء اتفقنا أم اختلفنا معه فهو مثال جيد لاستخدام التعبيرات القياسية
    - فاصل الهوامش في الشاملة يأخذ الشكل التالي _________
    - وبالتالي فالمطلوب أن تجد هذا الفاصل وكل ما بعده إلى آخر الصفحة وتستبدله بـ لاشيء ، فنتخلص من الهوامش كلها
    - يمكن الوصول لذلك بالتعبير الآتي :
    (?:^|\r\n)\s*_{4,}[\s\S]*
    (?:^|\r\n)    لنبدأ من أول السطر

    \s*

     احتمال وجود مسافة أو أكثر

    _

     الرمز _
    {4,}  تكرار السابق ، وهو الرمز _  بمقدار 4 مرات أو أكثر (وهذا يعبر عن فاصل الهوامش بمرونة أكثر)

    [\s\S]

     أي حرف أو رمز أو رقم (أي شيء دون استثناء) ، وذلك لأنه قوس فئة يشمل رمزين : الأول \s وهو يعني مسافة، والثاني\S  وهو يعني أي شيء سوى المسافة، فالجمع بينهما يشمل أي شيء ممكن كتابته

    *

     تكرار السابق (وهو أي رمز) صفر أو أكثر فهو يشمل أي شيء بعد فاصل الهوامش وحتى نهاية الصفحة

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