بسم الله الرحمن الرحیم
الأحرف العادية
رزرو شده ها:فئات الأحرف
[] --- اي رمز مما بین المعکوفینالفئات المنفية
[^] --- اي رمز مما لیس بین المعکوفینبعض الرموز الخاصة :
[گء-كم-ولىي] --- حرف عربيالمواضع
(?:^|\r\n) --- بدایة السطرمعامل : أو
| --- معامل : أوالتكرار
? --- صفر او مرة واحدةالتجمعات والعلامات المرجعية
() --- قوس مجموعةبشرط أن يكون بعده
(?=) --- بشرط ان یکون بعده کذاالتعبيرات القياسية Regular Expressions
تمهيد :
في الإصدار الثالث تم استخدام التعبيرات القياسية في البحث والاستبدال، وفي استخلاص العناوين من داخل النص
والتعبيرات القياسية هي (لغة) مستقلة، وإمكاناتها قوية جدا ، لا يمكن شرحها بالتفصيل في هذه العجالة ، وهناك مراجع متخصصة عنها ..
لكن يمكن أن نقول باختصار
: أنها أداة تستخدم لوصف أي (نموذج) معين من النص ، وأبادر بذكر مثال عملي لتصور
الأمر : ففي كتاب (الأسئلة والأجوبة الفقهية) للشيخ السلمان -رحمه الله- ، تجد
السؤال دائما يكون على هذا النمط :
س153: ما حكم تعجيل صلاة العصر؟ وما دليل الحكم؟
ويمكن وصف النمط السابق كالتالي :
- يبدأ من أول السطر
- ثم قد يكون هناك مسافة أو أكثر
- ثم حرف س
- ثم قد يكون هناك مسافة أو أكثر
- ثم رقم
- ثم بقية الكلام إلى نهاية السطر
فلو وجدنا طريقة نخبر بها الشاملة بهذا النمط بكل تفاصيله ودقته ، ثم نجعل كل نص
ينطبق عليه هذا النمط ، عنوانا ، لأنجزنا في دقيقة واحدة ما يمكن أن ننجزه في عدة
أيام من العمل اليدوي .. وهذا هو السبب وراء إضافة التعبيرات القياسية للشاملة ، إذ
أن التعبيرات القياسية بقوتها وشمولها ، تمكنك من وصف أي (نموذج) من النص
وهذا (النموذج) يمكنك أن تستخدمه في استخلاص العناوين - كما سبق - أو في البحث فقط ، أو في البحث والاستبدال
وتجد هنا إلمامة سريعة بهذه التعبيرات القياسية، وكله استقاء وتطبيق لبعض ما ورد في هذا الموقع http://www.regular-expressions.info وهو من أجود المواقع التي تناولت هذا الموضوع
في شاشة البحث
والاستبدال (تصل إليها من شاشة تحرير كتاب) ، تجد خيار : استعمل التعبيرات
القياسية. إذا وضعت علامة (صح) أمام هذا الخيار ظهر لك سهم صغير، يمكنك من إدراج عامة التعبيرات القياسية دون أن تضطر لتذكّرها بنفسك .. يمكنك وضع ما شئت من التعبيرات هنا لاختبارها على النص (من خاصية البحث فقط) والتأكد أنها تعمل بالشكل المطلوب، قبل استخدامها استخداما فعليا، في البحث والاستبدال أو في استخلاص العناوين
والوظائف المتاحة تحت السهم الصغير المذكور ، ستتضح أثناء
الشرح إن شاء الله
الأحرف العادية
1+1=2
ينبغي أن تكتب التعبير الآتي
1\+1=2
لاحظ ، وضعنا العلامة \ قبل حرف + لأنه من الرموز الخاصة ، ونحن هنا لا نريد معناه الخاص، بل نريد البحث عنه كما هو.
فئات الأحرف
[0-9a-zA-Z] يجد أي حرف أجنبي كبير أو صغير أو رقم ، لكنه يعود بواحد فقط من هؤلاء (أول واحد يصادفه)
الفئات المنفية
بعض الرموز الخاصة :
\s \S |
أي مسافة بيضاء ، وهي كل ما لا ترى له
جرما مطبوعا ، مثل : المسافة و فاصل الأسطر (زر
Enter) ، ونحوها أي شيء بخلاف المسافة البيضاء |
\d \D |
أي
رقم 0-9 أي شيء ليس رقما |
\r\n . |
فاصل الأسطر (= زر
Enter) أي شيء عدا فاصل الأسطر |
المواضع
^ $ |
بداية الصفحة نهاية الصفحة |
فمثلا ، لتبحث عن كلمة فصل بشرط أن تكون في أول الصفحة ، اكتب ^فصل
معامل : أو
التكرار
? | لتكرار ما سبق صفر أو مرة واحدة ، بمعنى تجعل ما قبله اختياريا، فلو كتبت رجالا? فسيجد رجال أو رجالا ، لأن آخر رمز وهو ا قد وضعت بعده ? فأصبح اختياريا |
* | لتكرار ما سبق صفر أو أكثر ، فستخرج النتيجة سواء أكان غير موجودا أم موجودا مرة واحدة أم أكثر فلو كتبت س\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 بأي رقم تريده |
?? , *? , +? , {3}? , {2,5}? , {,7}? , {3,}? وبالتالي : في المثال السابق 6794 - حديث أبي هريرة ... لو بحثت عن
\d+? سيقنع بأقل ما يفي بشرطه وهو 6 ويكتفي به ، فتكون نتيجة البحث هي 6
التجمعات والعلامات المرجعية
بشرط أن يكون بعده
أمثلة تطبيقية
نأتي الآن لبعض الأمثلة العملية وشرحها ، لنعرف كيف يمكن أن نستفيد مما سبق
(?:^|\r\n) | لنبدأ من أول السطر |
\s* |
احتمال وجود مسافة أو أكثر (لتكرر هذا الرمز كثيرا، تجده في القوائم، رغم أنه أصلا مركب من رمزين \s وتعني مسافة، و * وتعني تكرار السابق صفر أو أكثر ، وهذا يتكرر كثيرا لأنه أحيانا تكون هناك مسافة أو أكثر أو لا تكون هناك مسافة على الإطلاق) |
س | حرف س |
\s* |
احتمال وجود مسافة أو أكثر |
\d |
رقم واحد مثلا 5 ، 7 ، .. أيّ رقم واحد |
+ | تكرار السابق (أي الرقم الواحد) مرة أو أكثر ، فتكون النتيجة أي عدد ، مثلا 34 ، 567 ، 7 ، ... |
. | أي شيء بخلاف فاصل الأسطر (حتى لو السؤال طويل ومقسم على عدة أسطر فهذه الأسطر ليس بينها فاصل أي ليس بينها زر (Enter) |
+ | تكرار السابق (أي شيء بخلاف فاصل الأسطر) مرة أو أكثر ، فتكون النتيجة بقية السطر كله |
بقي الآن أن نبحث عن كل نص على هذا
الشكل ونضعه عنوانا في المستوى 2 ، من شاشة تحرير كتاب ، اضغط زر التبديل
حتى تصل لنظام استخلاص العناوين بالتعبيرات المنتظمة ، وهو الآتي
اكتب
التعبير في المربع الأول ، والرقم 2 (رقم المستوى) في المربع الثاني ثم اضغط
الزر وانتظر النتيجة
تنبيه : استخدام
التعبيرات القياسية هنا (في استخلاص العناوين) يتجاهل التشكيل (التشكيل فقط
وليس أشكال الهمزات أو غيرها) ، وهذه خدمة خاصة بالشاملة ، وهي مضافة فقط عند استخلاص
العناوين، أما استخدام التعبيرات القياسية في البحث والاستبدال (في الشاملة) ،
فلا يتجاهل أي شيء لا التشكيل ولا غيره
^ | لنبدأ من أول الصفحة |
( |
قوس مجموعة |
\r\n | فاصل أسطر، وهو في الواقع مكون من رمزين مختلفين متتاليين \r ثم \n |
( |
إغلاق قوس المجموعة |
+ |
تكرار السابق مرة أو أكثر (والسابق هو فاصل الأسطر، ووضعناه داخل قوس مجموعة لأنه مكون من رمزين، وإن لم نفعل لأصبح التكرار على الرمز الثاني منهما فقط) |
بالمثل ، لحذف الأسطر الفارغة من آخر الصفحة ، استخدم التعبير
في البحث، واترك
مربع الاستبدال فارغا (\r\n)+$
(?:^|\r\n) | لنبدأ من أول السطر |
\s* |
احتمال وجود مسافة أو أكثر |
_ |
الرمز _ |
{4,} | تكرار السابق ، وهو الرمز _ بمقدار 4 مرات أو أكثر (وهذا يعبر عن فاصل الهوامش بمرونة أكثر) |
[\s\S] |
أي حرف أو رمز أو رقم (أي شيء دون استثناء) ، وذلك لأنه قوس فئة يشمل رمزين : الأول \s وهو يعني مسافة، والثاني\S وهو يعني أي شيء سوى المسافة، فالجمع بينهما يشمل أي شيء ممكن كتابته |
* |
تكرار السابق (وهو أي رمز) صفر أو أكثر فهو يشمل أي شيء بعد فاصل الهوامش وحتى نهاية الصفحة |
هذه بعض الأمثلة ، وهناك غيرها الكثير مما يمكن عمله باستخدام ما سبق في هذه الصفحة من رموز ومعاملات
این کد شل اسکریپت برای حذف قسمتهای فایلهای وب سایت اوپن برهان قرآن کریم است، با دقت نگاه کنید: بخشی از کد مخفی شده به سورس نگاه کنید:find -iname "*.htm*" -exec grep -il "
" {} > a.txt \; -exec sed -i 's/