هذا هو الأمر pcre2test الذي يمكن تشغيله في مزود الاستضافة المجانية OnWorks باستخدام إحدى محطات العمل المجانية المتعددة على الإنترنت مثل Ubuntu Online أو Fedora Online أو محاكي Windows عبر الإنترنت أو محاكي MAC OS عبر الإنترنت
برنامج:
اسم
pcre2test - برنامج لاختبار التعبيرات العادية المتوافقة مع Perl.
موجز
pcre2test [خيارات] [مدخل ملف [انتاج ملف]]
pcre2test هو برنامج اختبار لمكتبات التعبير العادي PCRE2 ، ولكن يمكن أن يكون كذلك
تستخدم لتجربة التعبيرات العادية. يصف هذا المستند ميزات
برنامج الاختبار للحصول على تفاصيل حول التعبيرات النمطية نفسها ، راجع pcre2pattern
توثيق. للحصول على تفاصيل حول استدعاءات وظائف مكتبة PCRE2 وخياراتها ، راجع ملف
pcre2api كابل بيانات.
المدخلات لـ pcre2test هي سلسلة من أنماط التعبير العادي وسلاسل الموضوع
لتكون متطابقة. هناك أيضًا أسطر أوامر لتحديد الإعدادات الافتراضية والتحكم في بعضها
إجراءات خاصة. يظهر الناتج نتيجة كل محاولة مطابقة. المعدلات الخارجية
أو أسطر الأوامر الداخلية والأنماط وأسطر الموضوع تحدد وظيفة PCRE2
خيارات ، والتحكم في كيفية معالجة الموضوع ، والمخرجات التي يتم إنتاجها.
مع تطور مكتبة PCRE الأصلية البسيطة إلى حد ما ، اكتسبت العديد من الميزات المختلفة ،
ونتيجة لذلك ، فإن الأصل com.pcretest انتهى البرنامج بالعديد من الخيارات بطريقة فوضوية ،
بناء جملة غامض ، لاختبار جميع الميزات. قدم الانتقال إلى PCRE2 API الجديد ملف
فرصة لإعادة تنفيذ برنامج الاختبار pcre2test، مع تركيب معدِّل أنظف.
ومع ذلك ، لا يزال هناك العديد من المُعدِّلات الغامضة ، وبعضها على وجه التحديد
مصمم للاستخدام مع البرنامج النصي للاختبار وملفات البيانات التي يتم توزيعها
كجزء من PCRE2. جميع المعدلات موثقة هنا ، بعضها بدون مبرر كبير ،
لكن من غير المحتمل أن يكون الكثير منهم مفيدًا إلا عند اختبار المكتبات.
PCRE2's 8 بت ، 16-BIT لأي لبس 32-BIT مكتبات
يمكن إنشاء إصدارات مختلفة من مكتبة PCRE2 لدعم سلاسل الأحرف الموجودة
مشفرة في وحدات رمز 8 بت أو 16 بت أو 32 بت. واحدة أو اثنتان أو كل المكتبات الثلاث
قد يتم تثبيتها في وقت واحد. ال pcre2test يمكن استخدام البرنامج لاختبار جميع ملفات
المكتبات. ومع ذلك ، فإن المدخلات والمخرجات الخاصة بها تكون دائمًا بتنسيق 8 بت. عند اختبار ملف
يتم تحويل المكتبات والأنماط وسلاسل الموضوعات ذات 16 بت أو 32 بت إلى 16 أو 32 بت
التنسيق قبل تمريره إلى وظائف المكتبة. يتم تحويل النتائج مرة أخرى إلى 8 بت
وحدات كود للإخراج.
في الجزء المتبقي من هذا المستند ، ترد أسماء وظائف المكتبة وهياكلها بتنسيق
شكل عام ، على سبيل المثال ، pcre_compile (). الأسماء الفعلية المستخدمة في المكتبات لها
اللاحقة _8 أو _16 أو _32 ، حسب الاقتضاء.
INPUT التشفير
الإدخال إلى pcre2test تتم معالجتها سطرًا بسطر ، إما عن طريق استدعاء مكتبة C fgets ()
وظيفة ، أو عبر libreadline مكتبة (انظر أدناه). يتم معالجة الإدخال باستخدام
وظائف سلسلة C ، لذلك يجب ألا تحتوي على أصفار ثنائية ، على الرغم من أنها تشبه Unix
البيئات ، fgets () يعامل أي بايت بخلاف السطر الجديد كأحرف بيانات. في بعض
يتسبب حرف بيئات Windows 26 (hex 1A) في إنهاء فوري للملف ، وليس أكثر من ذلك
تتم قراءة البيانات.
لتحقيق أقصى قدر من قابلية النقل ، من الأفضل تجنب الأحرف غير المطبوعة بتنسيق
pcre2test ملفات الإدخال. هناك وسيلة لتحديد أحرف النمط مثل
أزواج سداسية عشرية ، مما يجعل من الممكن تضمين أصفار ثنائية في نمط لـ
أغراض الاختبار. تتم معالجة سطور الموضوع لعمليات هروب الخط المائل العكسي ، مما يجعلها
من الممكن أن تتضمن أي قيمة بيانات.
COMMAND خط OPTIONS
-8 إذا تم إنشاء مكتبة 8 بت ، فسيؤدي هذا الخيار إلى استخدامها (هذا هو
الافتراضي). إذا لم يتم إنشاء مكتبة 8 بت ، فسيؤدي هذا الخيار إلى ظهور ملف
خطأ.
-16 إذا تم إنشاء مكتبة ذات 16 بت ، فسيؤدي هذا الخيار إلى استخدامها. فقط لو
تم إنشاء مكتبة ذات 16 بت ، وهذا هو الإعداد الافتراضي. إذا كانت مكتبة 16 بت
لم يتم بناؤه ، هذا الخيار يسبب خطأ.
-32 إذا تم إنشاء مكتبة ذات 32 بت ، فسيؤدي هذا الخيار إلى استخدامها. فقط لو
تم إنشاء مكتبة ذات 32 بت ، وهذا هو الإعداد الافتراضي. إذا كانت مكتبة 32 بت
لم يتم بناؤه ، هذا الخيار يسبب خطأ.
-b تصرف كما لو أن كل نمط له الامتداد / fullbincode المعدل؛ الداخلية الكاملة
يتم إخراج النموذج الثنائي للنمط بعد التجميع.
-C قم بإخراج رقم إصدار مكتبة PCRE2 وجميع المعلومات المتاحة
حول الميزات الاختيارية المضمنة ، ثم الخروج بدون خروج
شفرة. يتم تجاهل جميع الخيارات الأخرى.
-C خيار معلومات الإخراج حول خيار وقت بناء محدد ، ثم الخروج. هذا
الوظيفة مخصصة للاستخدام في البرامج النصية مثل اختبار المدى. ما يلي
خيارات إخراج القيمة وتعيين رمز الخروج كما هو موضح:
ebcdic-nl رمز LF (= NL) في بيئة EBCDIC:
0x15 أو 0x25
0 إذا تم استخدامه في بيئة ASCII
كود الخروج هو دائما 0
حجم الروابط حجم الارتباط الداخلي الذي تم تكوينه (2 أو 3 أو 4)
تم تعيين رمز الخروج على حجم الارتباط
سطر جديد الإعداد الافتراضي للسطر الجديد:
CR أو LF أو CRLF أو ANYCRLF أو أي
كود الخروج هو دائما 0
bsr هو الإعداد الافتراضي لما يتطابق مع \ R:
ANYCRLF أو أي
كود الخروج هو دائما 0
خرج الخياران التاليان 1 لصحيح أو 0 للخطأ ، واضبط كود الخروج على
نفس القيمة:
الخط المائل العكسي C \ C مدعوم (غير مغلق)
تم تجميع ebcdic لبيئة EBCDIC
jit الدعم في الوقت المناسب متاح
pcre2-16 تم بناء مكتبة 16 بت
pcre2-32 تم بناء مكتبة 32 بت
pcre2-8 تم بناء مكتبة 8 بت
يتوفر دعم يونيكود يونيكود
إذا تم إعطاء خيار غير معروف ، يتم إخراج رسالة خطأ ؛ رمز الخروج هو 0.
-d تصرف كما لو أن كل نمط له الامتداد تصحيح المعدل؛ الشكل الداخلي و
يتم إخراج المعلومات حول النمط المترجم بعد التجميع ؛ -d is
أي ما يعادل -b -i.
-دفا تصرف كما لو أن كل سطر موضوع يحتوي على الامتداد DFA المعدل؛ تتم المطابقة باستخدام ملف
pcre2_dfa_match () وظيفة بدلا من الافتراضي pcre2_match ().
-مساعدة قم بإخراج ملخص موجز لهذه الخيارات ثم الخروج.
-i تصرف كما لو أن كل نمط له الامتداد /معلومات المعدل؛ معلومات عن المترجمة
يتم إعطاء النمط بعد التجميع.
-جيت تصرف كما لو أن كل خط نمط يحتوي على الامتداد جيت المعدل؛ بعد النجاح
التحويل البرمجي ، يتم تمرير كل نمط إلى برنامج التحويل البرمجي في الوقت المناسب ، إذا كان متاحًا.
-نمط قائمة المعدلة
تصرف كما لو أن كل سطر نمط يحتوي على المعدلات المعطاة.
-q لا تقم بإخراج رقم إصدار pcre2test في بداية التنفيذ.
-S المقاس في الأنظمة الشبيهة بـ Unix ، اضبط حجم مكدس وقت التشغيل على المقاس ميغا بايت.
-موضوعات قائمة المعدلة
تصرف كما لو أن كل سطر موضوع يحتوي على المعدلات المعطاة.
-t قم بتشغيل كل ترجمة ومطابقة عدة مرات باستخدام مؤقت ، وإخراج النتيجة
مرات لكل تجميع أو مباراة. عند استخدام JIT ، يتم إعطاء أوقات منفصلة لـ
الأولي وتجميع JIT. يمكنك التحكم في عدد التكرارات
التي يتم استخدامها للتوقيت عن طريق المتابعة -t برقم (كعنصر منفصل في
سطر الأوامر). على سبيل المثال ، "-t 1000" يتكرر 1000 مرة. الافتراضي هو
تتكرر 500,000 مرة.
-TM هذا مثل -t إلا أنه يضاعف مرحلة المطابقة فقط ، وليس التجميع
مرحلة.
-T - TM هؤلاء يتصرفون مثل -t و -TM، ولكن بالإضافة إلى ذلك ، في نهاية الجولة ، المجموع
مرات الإخراج لجميع التجميعات والمطابقات.
-الإصدار أخرج رقم إصدار PCRE2 ثم اخرج.
الوصف
If pcre2test يتم إعطاء وسيطين لاسم الملف ، يقرأ من الأول ويكتب إلى
ثانية. إذا كان الاسم الأول "-" ، يتم أخذ الإدخال من الإدخال القياسي. لو pcre2test is
بالنظر إلى حجة واحدة فقط ، فإنه يقرأ من هذا الملف ويكتب إلى stdout. خلاف ذلك ، يقرأ
من stdin ويكتب إلى stdout.
متى pcre2test ، يمكن لخيار التكوين تحديد أنه يجب ربطه بـ
القادم libreadline or تحرير مكتبة. عندما يتم ذلك ، إذا كان الإدخال من محطة ، فإنه
يقرأ باستخدام قراءة سطر () وظيفة. هذا يوفر تحرير الخط ومرافق التاريخ.
الإخراج من -مساعدة ينص الخيار أم لا قراءة سطر () وسوف تستخدم.
يتعامل البرنامج مع أي عدد من الاختبارات ، كل منها يتكون من مجموعة من سطور الإدخال.
تبدأ كل مجموعة بنمط تعبير عادي ، متبوعًا بأي عدد من سطور الموضوع
ليتم مطابقتها مع هذا النمط. بين مجموعات بيانات الاختبار ، تبدأ سطور الأوامر
مع # قد تظهر. يمكن أيضًا معالجة تنسيق الملف هذا ، مع بعض القيود ، بواسطة ملف
perltest.sh البرنامج النصي الذي يتم توزيعه مع PCRE2 كوسيلة للتحقق من أن ملف
سلوك PCRE2 و Perl هو نفسه.
عندما يكون الإدخال محطة ، pcre2test يطالب لكل سطر من الإدخال ، باستخدام "re>" إلى
للمطالبة بأنماط التعبير العادي ، و "البيانات>" للمطالبة بسطر الموضوع. يأمر
لا يمكن إدخال الأسطر التي تبدأ بـ # إلا استجابة للمطالبة "re>".
تتم مطابقة كل سطر موضوع بشكل منفصل ومستقل. إذا كنت تريد أن تفعل متعدد الخطوط
المطابقات ، يجب عليك استخدام \ n تسلسل الهروب (أو \ r أو \ r \ n ، وما إلى ذلك ، بناءً على
newline setting) في سطر واحد من الإدخال لتشفير تسلسلات السطر الجديد. لا يوجد
تحديد طول سطور الموضوع ؛ يتم تمديد المخزن المؤقت للإدخال تلقائيًا إذا كان كذلك
صغير جدا. هناك ميزات النسخ المتماثل التي تجعل من الممكن إنشاء طويلة
النمط المتكرر أو سطور الموضوع دون الحاجة إلى توفيرها بشكل صريح.
يشير السطر الفارغ أو نهاية الملف إلى نهاية سطور الموضوع للاختبار ، في
أي نقطة من المتوقع أن يكون هناك نمط جديد أو سطر أوامر جديد إذا كان لا يزال هناك إدخال لتتم قراءته.
COMMAND LINES
بين مجموعات بيانات الاختبار ، يتم تفسير السطر الذي يبدأ بـ # على أنه سطر أوامر.
إذا كان الحرف الأول متبوعًا بمسافة بيضاء أو علامة تعجب ، فسيكون السطر
تعامل كتعليق ، وتجاهلها. خلاف ذلك ، يتم التعرف على الأوامر التالية:
#forbid_utf
تحتوي الأنماط اللاحقة تلقائيًا على خيارات PCRE2_NEVER_UTF و PCRE2_NEVER_UCP
مجموعة ، والتي تمنع استخدام خيارات PCRE2_UTF و PCRE2_UCP واستخدام (* UTF)
و (* UCP) في بداية الأنماط. يفرض هذا الأمر أيضًا خطأ في حالة وجود ملف
يحتوي النمط على أي تكرارات لـ \ P أو \ p أو \ X ، والتي لا تزال مدعومة عندما
لم يتم تعيين PCRE2_UTF ، ولكنها تتطلب دعم خاصية Unicode ليتم تضمينها في ملف
مكتبة.
هذا هو حارس المشغل الذي يتم استخدامه في ملفات الاختبار للتأكد من خاصية UTF أو Unicode
لا يتم إضافة الاختبارات عن طريق الخطأ إلى الملفات التي يتم استخدامها عندما لا يتم دعم Unicode
المدرجة في المكتبة. يمكن أيضًا أن يؤدي تعيين PCRE2_NEVER_UTF و PCRE2_NEVER_UCP كإعداد افتراضي
يمكن الحصول عليها عن طريق استخدام #نمط؛ الفرق هو ذلك #forbid_utf لا يمكن فكها ،
ولا يتم عرض الخيارات التلقائية في معلومات النمط لتجنب الازدحام
إخراج الاختبار.
#حمولة
يستخدم هذا الأمر لتحميل مجموعة من الأنماط المترجمة مسبقًا من ملف ، كما هو موضح في
قسم بعنوان "حفظ واستعادة الأنماط المترجمة" أدناه.
#newline_default [ ]
عندما يتم بناء PCRE2 ، يمكن تحديد اصطلاح جديد للسطر الجديد. هذا يحدد أي
يتم التعرف على الأحرف و / أو أزواج الأحرف على أنها تشير إلى سطر جديد في نمط أو
سلسلة الموضوع. يمكن تجاوز الافتراضي عندما يتم تجميع نمط. المعيار
تحتوي ملفات الاختبار على اختبارات لاتفاقيات الأسطر الجديدة المختلفة ، ولكن غالبية الاختبارات
توقع أن يتم التعرف على تغذية سطر واحد كسطر جديد بشكل افتراضي. بدون إجراء خاص
ستفشل الاختبارات عندما يتم تجميع PCRE2 باستخدام إما CR أو CRLF باعتباره السطر الجديد الافتراضي.
يحدد الأمر #newline_default قائمة بأنواع الأسطر الجديدة المقبولة كملف
تقصير. يجب أن تكون الأنواع أحد الأنواع CR أو LF أو CRLF أو ANYCRLF أو أي (بأحرف كبيرة أو صغيرة) ،
على سبيل المثال:
#newline_default LF أي أي CRLF
إذا كان السطر الجديد الافتراضي موجودًا في القائمة ، فلن يكون لهذا الأمر أي تأثير. خلاف ذلك ، إلا عندما
اختبار POSIX API ، أ خط جديد المُعدِّل الذي يحدد أول اصطلاح سطر جديد بتنسيق
تتم إضافة القائمة (LF في المثال أعلاه) إلى أي نمط لا يحتوي بالفعل على ملف
خط جديد المعدل. إذا كانت قائمة الأسطر الجديدة فارغة ، فسيتم إيقاف تشغيل الميزة. هذا الأمر
موجودة في عدد من ملفات إدخال الاختبار القياسية.
عندما يتم اختبار POSIX API ، لا توجد طريقة لتجاوز السطر الجديد الافتراضي
الاصطلاح ، على الرغم من أنه من الممكن تعيين اصطلاح السطر الجديد من داخل النمط. أ
يتم إعطاء تحذير إذا كان POSIX عند استخدام المعدل #newline_default من شأنه تعيين الافتراضي
لواجهة برمجة تطبيقات غير POSIX.
#نمط
يقوم هذا الأمر بتعيين قائمة معدِّلات افتراضية تنطبق على جميع الأنماط اللاحقة.
يمكن للمعدِّلات الموجودة على النمط تغيير هذه الإعدادات.
#بيرلتيست
يؤدي ظهور هذا الخط إلى التحقق من جميع إعدادات المُعدِّل اللاحقة
التوافق مع perltest.sh النصي ، والذي يستخدم للتأكيد على أن Perl يعطي الامتداد
نفس نتائج PCRE2. أيضًا ، بصرف النظر عن سطور التعليقات ، لا يوجد أي من سطور الأوامر الأخرى
مسموح بها ، لأنها والعديد من المُعدِّلات خاصة بـ pcre2test، وينبغي
لا يتم استخدامها في ملفات الاختبار التي تتم معالجتها أيضًا بواسطة perltest.sh. #بيرلتيست أمر
يساعد في اكتشاف الاختبارات التي يتم وضعها عن طريق الخطأ في ملف خاطئ.
#pop [ ]
يستخدم هذا الأمر لمعالجة مكدس الأنماط المترجمة ، كما هو موضح في ملف
قسم بعنوان "حفظ واستعادة الأنماط المجمعة" أدناه.
#يحفظ
يستخدم هذا الأمر لحفظ مجموعة من الأنماط المترجمة إلى ملف ، كما هو موضح في ملف
قسم بعنوان "حفظ واستعادة الأنماط المجمعة" أدناه.
#موضوع
يقوم هذا الأمر بتعيين قائمة معدِّلات افتراضية تنطبق على جميع سطور الموضوع اللاحقة.
يمكن للمعدِّلات الموجودة في سطر الموضوع تغيير هذه الإعدادات.
أختر بناء الجملة
يتم استخدام قوائم المعدلات مع كل من النمط وخطوط الموضوع. يتم فصل العناصر الموجودة في القائمة
بفاصلات متبوعة بمسافة بيضاء اختيارية. المسافة الزائدة في قائمة المعدلات هي
تجاهله. قد يتم إعطاء بعض المعدلات لكل من الأنماط وخطوط الموضوع ، في حين أن البعض الآخر
صالحة فقط لواحد أو للآخر. كل معدل له اسم طويل ، على سبيل المثال
"مثبت" ، وبعضها يجب أن يتبعه علامة يساوي وقيمة ، على سبيل المثال ،
"الإزاحة = 12". لا يمكن أن تحتوي القيم على أحرف فاصلة ، لكنها قد تحتوي على مسافات. الصفات التعريفية
التي لا تأخذ قيمًا قد تكون مسبوقة بعلامة ناقص لإيقاف تشغيل إعداد سابق.
يمكن أيضًا تحديد عدد قليل من المُعدِّلات الأكثر شيوعًا كأحرف فردية ، على سبيل المثال
"أنا" من أجل "بلا غلاف". في التوثيق ، باتباع اصطلاح بيرل ، هذه مكتوبة
بشرطة مائلة ("معدل / i") للوضوح. يجب أن تكون جميع المعدلات المختصرة
متسلسلة في العنصر الأول من قائمة التعديل. إذا لم يتم التعرف على العنصر الأول على أنه
اسم معدل طويل ، يتم تفسيره على أنه سلسلة من هذه الاختصارات. على سبيل المثال:
/ abc / ig ، سطر جديد = cr ، jit = 3
هذا خط نمط تبدأ قائمة المعدلات الخاصة به بمعدلين من حرف واحد (/ i و
/ ز). المعدلات المختصرة ذات الأحرف الصغيرة هي نفسها المستخدمة في Perl.
نمط بناء الجملة
يجب أن يبدأ خط النمط بأحد الأحرف التالية (الرموز الشائعة ، باستثناء
نمط الأحرف الوصفية):
/! "" - = _: ؛ ،٪ & @ ~
يتم تفسير هذا على أنه محدد النمط. قد يستمر التعبير النمطي
عدة أسطر إدخال ، وفي هذه الحالة يتم تضمين أحرف السطر الجديد بداخله. إنها
من الممكن تضمين المحدِّد داخل النموذج عن طريق إفلاته بشرطة مائلة للخلف ، لـ
مثال
/ abc \ / def /
إذا قمت بذلك ، فإن الهروب والمحدد يشكلان جزءًا من النمط ، ولكن منذ
المحددات كلها ليست أبجدية رقمية ، وهذا لا يؤثر على تفسيرها. إذا كان
يُتبع مُحدِّد الإنهاء مباشرةً بشرطة مائلة للخلف ، على سبيل المثال ،
/ abc / \
ثم يتم إضافة شرطة مائلة للخلف إلى نهاية النمط. يتم ذلك لتوفير وسيلة
اختبار حالة الخطأ التي تنشأ إذا انتهى النمط بشرطة مائلة للخلف ، لأن
/ abc \ /
يتم تفسيره على أنه السطر الأول من النمط الذي يبدأ بـ "abc /" ، مما يتسبب في pcre2test
لقراءة السطر التالي كاستمرار للتعبير النمطي.
يمكن أن يتبع النمط بقائمة معدل (التفاصيل أدناه).
SUBJECT خط بناء الجملة
قبل أن يتم تمرير كل سطر إلى pcre2_match () or pcre2_dfa_match ()، الرائدة و
تتم إزالة المسافة البيضاء الزائدة ، ويتم فحص الخط بحثًا عن عمليات هروب الخط المائل العكسي. ال
فيما يلي وسيلة لترميز الأحرف غير المطبوعة بطريقة مرئية:
إنذار (بيل ، × 07)
\ b مسافة للخلف (x08)
\ ه هروب (\ x27)
\ f نموذج التغذية (\ x0c)
\ n سطر جديد (\ x0a)
\ r إرجاع حرف (\ x0d)
\ t علامة تبويب (\ x09)
\ v علامة تبويب عمودية (\ x0 ب)
\ n رقم ثماني (حتى 3 أرقام ثماني) ؛ دائماً
بايت ما لم يكن> 255 في وضع UTF-8 أو 16 بت أو 32 بت
\ o {dd ...} حرف ثماني (أي عدد من الأرقام الثمانية}
\ xhh سداسي عشري بايت (حتى 2 رقم ست عشري)
\ x {hh ...} حرف سداسي عشري (أي عدد من الأرقام الست عشرية)
استخدام \ x {hh ...} لا يعتمد على استخدام UTF المعدل على النمط. إنها
معترف بها دائما. قد يكون هناك أي عدد من الأرقام السداسية العشرية داخل الأقواس ؛
تثير القيم غير الصالحة رسائل خطأ.
لاحظ أن \ xhh يحدد بايت واحد بدلاً من حرف واحد في وضع UTF-8 ؛ هذا يجعلها
من الممكن إنشاء تسلسلات UTF-8 غير صالحة لأغراض الاختبار. على الجانب الآخر،
\ x {hh} يتم تفسيره على أنه حرف UTF-8 في وضع UTF-8 ، مما ينتج عنه أكثر من بايت واحد إذا
القيمة أكبر من 127. عند اختبار مكتبة 8 بت ليست في وضع UTF-8 ، \ x {hh}
يولد بايت واحد لقيم أقل من 256 ، ويسبب خطأ لقيم أكبر.
في وضع UTF-16 ، يتم قبول جميع القيم المكونة من 4 أرقام \ x {hhhh}. هذا يجعل من الممكن
إنشاء تسلسلات UTF-16 غير صالحة لأغراض الاختبار.
في وضع UTF-32 ، يتم قبول جميع القيم المكونة من 4 إلى 8 أرقام \ x {...}. هذا يجعل من الممكن
إنشاء تسلسلات UTF-32 غير صالحة لأغراض الاختبار.
هناك تسلسل مائل عكسي خاص يحدد النسخ المتماثل لواحد أو أكثر
الشخصيات:
\ [ ] { }
هذا يجعل من الممكن اختبار السلاسل الطويلة دون الحاجة إلى توفيرها كجزء من
ملف. فمثلا:
\ [أبك] {4}
تم تحويله إلى "abcabcabcabc". هذه الميزة لا تدعم التداخل. لتضمين أ
إغلاق قوس مربع في الأحرف ، قم بتشفيره كـ \ x5D.
تشير الشرطة المائلة للخلف متبوعة بعلامة يساوي إلى نهاية سلسلة الموضوع والبداية
من قائمة المعدلات. على سبيل المثال:
abc \ = notbol ، not فارغ
إذا كانت سلسلة الموضوع فارغة وتبعها \ = مسافة بيضاء ، فسيتم التعامل مع السطر على أنه a
سطر التعليق ، ولا يتم استخدامه للمطابقة. على سبيل المثال:
\ = هذا تعليق.
abc \ = هذه قائمة معدِّلات غير صالحة.
الشرطة المائلة للخلف متبوعة بأي حرف آخر غير أبجدي رقمي يهرب فقط من هذا الحرف.
الخط المائل العكسي متبوعًا بأي شيء آخر يتسبب في حدوث خطأ. ومع ذلك ، إذا كانت الشخصية الأخيرة
في السطر شرطة مائلة للخلف (ولا توجد قائمة معدِّلات) ، يتم تجاهله. هذا يعطي
طريقة لتمرير سطر فارغ كبيانات ، لأن السطر الفارغ الحقيقي ينهي إدخال البيانات.
نمط الصفات التعريفية
هناك عدة أنواع من المعدلات التي يمكن أن تظهر في خطوط النمط. ما لم يذكر
أدناه ، يمكن استخدامها أيضًا في #نمط أوامر. يمكن أن تضيف قائمة معدِّلات النمط إلى أو
تجاوز المُعدِّلات الافتراضية التي تم تعيينها بواسطة ملف #نمط أمر.
الضبط مجموعة الخيارات
المعدِّلات التالية تعيِّن خيارات لـ pcre2_compile (). الأكثر شيوعًا لها
اختصارات الحروف. يرى pcre2api للحصول على وصف لتأثيراتها.
allow_empty_class لتعيين PCRE2_ALLOW_EMPTY_CLASS
مجموعة alt_bsux PCRE2_ALT_BSUX
تعيين alt_circumflex PCRE2_ALT_CIRCUMFLEX
تعيين alt_verbnames PCRE2_ALT_VERBNAMES
مجموعة مثبتة PCRE2_ANCHORED
تعيين auto_callout PCRE2_AUTO_CALLOUT
/ أنا مجموعة PCRE2_CASELESS بدون غلاف
الدولار_إلى تعيين PCRE2_DOLLAR_ENDONLY فقط
/ s مجموعة النقاط PCRE2_DOTALL
تعيين الأسماء المزدوجة PCRE2_DUPNAMES
/ x مجموعة ممتدة PCRE2_EXTENDED
مجموعة الخط الأول PCRE2_FIRSTLINE
match_unset_backref تعيين PCRE2_MATCH_UNSET_BACKREF
/ م مجموعة متعددة الأسطر PCRE2_MULTILINE
never_backslash_c تعيين PCRE2_NEVER_BACKSLASH_C
never_ucp تعيين PCRE2_NEVER_UCP
تعيين never_utf PCRE2_NEVER_UTF
no_auto_capture مجموعة PCRE2_NO_AUTO_CAPTURE
no_auto_possess تعيين PCRE2_NO_AUTO_POSSESS
تعيين no_dotstar_anchor PCRE2_NO_DOTSTAR_ANCHOR
no_start_optimize تعيين PCRE2_NO_START_OPTIMIZE
no_utf_check تعيين PCRE2_NO_UTF_CHECK
تعيين ucp PCRE2_UCP
مجموعة غير شرعية PCRE2_UNGREEDY
تعيين use_offset_limit PCRE2_USE_OFFSET_LIMIT
مجموعة utf PCRE2_UTF
بالإضافة إلى تشغيل خيار PCRE2_UTF ، فإن ملف UTF يتسبب المعدل في عدم الطباعة
الأحرف في سلاسل الإخراج المراد طباعتها باستخدام تدوين \ x {hh ...}. خلاف ذلك ، هؤلاء
يتم إخراج أقل من 0x100 في شكل سداسي بدون الأقواس المتعرجة.
الضبط مجموعة ضوابط
تؤثر المعدلات التالية على عملية التجميع أو تطلب معلومات حول
نمط:
bsr = [anycrlf | unicode] حدد معالجة \ R
يُظهر الرمز الثنائي / B رمزًا ثنائيًا بدون أطوال
عرض callout_info معلومات وسيلة الشرح
تصحيح نفس المعلومات ، fullbincode
يظهر fullbincode رمزًا ثنائيًا بأطوال
/ أنا تظهر المعلومات معلومات حول النمط المترجم
يتم ترميز النمط السداسي عشري بالنظام الست عشري
جيت [= ] استخدم JIT
jitfast استخدم مسار JIT السريع
jitverify تحقق من استخدام JIT
لغة = استخدم هذه اللغة
max_pattern_length = اضبط الحد الأقصى لطول النمط
الذاكرة تظهر الذاكرة المستخدمة
سطر جديد = تعيين نوع السطر الجديد
تجميع null_context مع سياق NULL
parens_nest_limit = تعيين أقصى عمق الأقواس
posix استخدام POSIX API
دفع دفع النمط المترجم على المكدس
مكدس = اختبار ميزة Stackguard
الجداول = [0 | 1 | 2] حدد الجداول الداخلية
تم وصف تأثيرات هذه المعدلات في الأقسام التالية.
خط جديد و \R معالجة
إنّ كافة أنواع عهود الـ BSR يحدد معدل ما يجب أن يتطابق في النمط \ R. إذا تم تعيينه على "anycrlf" ،
\ R يتطابق مع CR أو LF أو CRLF فقط. إذا تم تعيينه على "unicode" ، فإن \ R يطابق أي سطر جديد من Unicode
تسلسل. يتم تحديد الإعداد الافتراضي عند إنشاء PCRE2 ، مع الوضع الافتراضي
يونيكود.
إنّ كافة أنواع عهود الـ خط جديد يُحدد المُعدِّل الأحرف التي يجب تفسيرها على أنها أسطر جديدة ، سواء في
النمط وفي سطور الموضوع. يجب أن يكون النوع من النوع CR أو LF أو CRLF أو ANYCRLF أو ANY
(بالأحرف الكبيرة أو الصغيرة).
معلومات عن الصابون a النمط
إنّ كافة أنواع عهود الـ تصحيح المعدل هو اختصار لـ معلومات ، fullbincode، يطلب كل ما هو متاح
معلومات.
إنّ كافة أنواع عهود الـ بينكود يؤدي التعديل إلى إخراج تمثيل الشفرة المترجمة بعد ذلك
التحويل البرمجي. لا تحتوي هذه المعلومات على قيم الطول والإزاحة ، مما يضمن
يتم إنشاء نفس الإخراج لأحجام ارتباط داخلية مختلفة وكود مختلف
عرض الوحدة. باستخدام بينكود، يمكن استخدام نفس اختبارات الانحدار بشكل مختلف
البيئات.
إنّ كافة أنواع عهود الـ com.fullbincode المعدل ، على النقيض من ذلك ، هل تتضمن قيم الطول والإزاحة. هذا مستخدم
في عدد قليل من الاختبارات الخاصة التي يتم تشغيلها فقط من أجل عروض وأحجام ارتباط محددة لوحدة التعليمات البرمجية ، وهي
مفيد أيضًا للاختبارات لمرة واحدة.
إنّ كافة أنواع عهود الـ info يطلب المُعدِّل معلومات حول النمط المترجم (سواء كان مثبتًا ،
له حرف أول ثابت ، وما إلى ذلك). يتم الحصول على المعلومات من
pcre2_pattern_info () وظيفة. فيما يلي بعض الأمثلة النموذجية:
إعادة> / (؟ i) (^ a | ^ b) / m ، معلومات
التقاط عدد الأنماط الفرعية = 1
خيارات الترجمة: متعدد الأسطر
الخيارات العامة: متعدد الأسطر بدون غلاف
أول وحدة رمز في البداية أو تتبع السطر الجديد
طول الموضوع ، الحد الأدنى = 1
إعادة> / (؟ i) abc / info
التقاط عدد الأنماط الفرعية = 0
خيارات الترجمة:
الخيارات العامة: بدون غلاف
وحدة الكود الأولى = 'a' (بدون حالة)
وحدة الكود الأخيرة = 'c' (بدون حالة)
طول الموضوع ، الحد الأدنى = 3
"خيارات الترجمة" هي تلك التي تحددها المعدلات ؛ أضافت "الخيارات العامة" خيارات
التي يتم أخذها أو استنتاجها من النمط. إذا كانت كلتا مجموعتي الخيارات متطابقتين ، فسيكون ملف
يتم إخراج سطر "خيارات" واحد ؛ إذا لم تكن هناك خيارات ، فسيتم حذف السطر. "الكود الأول
الوحدة "هي المكان الذي يجب أن يبدأ فيه أي تطابق ؛ إذا كان هناك أكثر من واحد يتم سردها على أنها
"وحدات كود البداية". "آخر وحدة رمز" هي آخر وحدة رمز حرفية يجب أن تكون موجودة
في أي مباراة. هذه ليست بالضرورة الشخصية الأخيرة. تم حذف هذه الأسطر إذا كانت الإجابة لا
يتم تسجيل وحدات رمز البداية أو النهاية.
إنّ كافة أنواع عهود الـ callout_info يطلب المعدِّل معلومات حول جميع وسائل الشرح في النمط. أ
يتم إخراج قائمة منهم في نهاية أي معلومات أخرى مطلوبة. لكل
وسيلة الشرح ، إما رقمها أو السلسلة ، متبوعة بالعنصر الذي يليها في ملف
.
مرور a اغية سياق الكلام
عادة، pcre2test يمرر كتلة سياق إلى pcre2_compile (). إذا كان null_context
تم تعيين المعدل ، ومع ذلك ، يتم تمرير NULL. هذا لاختبار ذلك pcre2_compile () يسلك
بشكل صحيح في هذه الحالة (يستخدم القيم الافتراضية).
تحديد a النمط in عرافة
إنّ كافة أنواع عهود الـ عرافة يحدد التعديل أن أحرف النمط يجب تفسيرها على أنها
أزواج من الأرقام السداسية العشرية. يُسمح بمسافة بيضاء بين الأزواج. على سبيل المثال:
/ أب 32 59 / ست عشري
يتم توفير هذه الميزة كطريقة لإنشاء أنماط تحتوي على صفر ثنائي وأخرى
أحرف غير مطبوعة. بشكل افتراضي، pcre2test يمر الأنماط كسلاسل صفرية منتهية
إلى pcre2_compile ()، مع إعطاء الطول PCRE2_ZERO_TERMINATED. ومع ذلك ، بالنسبة للأنماط
المحدد بالنظام الست عشري ، يتم تمرير الطول الفعلي للنمط.
توليد التداول الطويل تكرارية أنماط
تستخدم بعض الاختبارات أنماطًا طويلة متكررة جدًا. بدلا من خلق طويل جدا
خط الإدخال لمثل هذا النمط ، يمكنك استخدام ميزة التكرار الخاصة ، على غرار
واحد موصوف لسطر الموضوع أعلاه. إذا كان توسيع المعدل موجود على نمط ،
أجزاء من النمط التي لها الشكل
\ [ ] { }
قبل أن يتم تمرير النمط إلى pcre2_compile (). على سبيل المثال ، \ [AB] {6000} هو
توسعت إلى "ABAB ..." 6000 مرة. لا يمكن تداخل هذا البناء. مبدئي "\ ["
يتم التعرف على التسلسل فقط إذا تم العثور على "] {" متبوعة بأرقام عشرية و "}" لاحقًا
النمط. إذا لم يكن الأمر كذلك ، فستبقى الأحرف في النمط دون تغيير.
إذا كان جزء من نمط موسع يبدو وكأنه توسع ، ولكنه في الحقيقة جزء من الواقع
نمط ، يمكن تجنب التوسع غير المرغوب فيه بإعطاء قيمتين في المحدد الكمي. ل
على سبيل المثال ، لم يتم التعرف على \ [AB] {6000,6000،XNUMX} كعنصر توسيع.
إذا كان info تم تعيين المعدل على نمط موسع ، نتيجة التوسيع هي
المدرجة في المعلومات التي يتم إخراجها.
JIT مجموعة
يعد التجميع في الوقت المناسب (JIT) تحسينًا ثقيلًا يمكنه الإسراع بشكل كبير
نمط مطابقة. انظر pcre2jit وثائق للحصول على التفاصيل. يحدث تجميع JIT ،
اختياريًا ، بعد تجميع النموذج بنجاح في نموذج داخلي. JIT
المترجم يحول هذا إلى رمز الجهاز الأمثل. يحتاج إلى معرفة ما إذا كان وقت المباراة
الخيارات PCRE2_PARTIAL_HARD و PCRE2_PARTIAL_SOFT سيتم استخدامها ، نظرًا لاختلاف
يتم إنشاء رمز للحالات المختلفة. انظر جزئي معدِّل في "معدِّلات الموضوع"
أدناه للحصول على تفاصيل حول كيفية تحديد هذه الخيارات لكل محاولة مطابقة.
طلب تجميع JIT من قبل / جيت معدل النمط ، والذي قد يكون اختياريًا
متبوعة بعلامة يساوي ورقم في النطاق من 0 إلى 7. البتات الثلاثة التي تتكون منها
يحدد الرقم أي من أوضاع تشغيل JIT الثلاثة سيتم تجميعها:
1 قم بتجميع كود JIT للمطابقة غير الجزئية
2 قم بتجميع كود JIT للمطابقة الجزئية الناعمة
4 قم بتجميع كود JIT للمطابقة الجزئية الصعبة
القيم المحتملة لـ / جيت لذلك فإن المعدل هو:
0 تعطيل JIT
1 مطابقة عادية فقط
2 مطابقة جزئية ناعمة فقط
3 مطابقة جزئية عادية وناعمة
4 صعب المطابقة الجزئية فقط
6 مطابقة جزئية ناعمة وصعبة فقط
7 جميع الأوضاع الثلاثة
إذا لم يتم إعطاء رقم ، فسيتم افتراض 7. تعني عبارة "المطابقة الجزئية" استدعاء لـ
pcre2_match () مع مجموعة خيارات PCRE2_PARTIAL_SOFT أو PCRE2_PARTIAL_HARD.
لاحظ أن مثل هذه المكالمة قد ترجع تطابقًا كاملاً ؛ تتيح الخيارات إمكانية وجود ملف
تطابق جزئي ، لكن لا تتطلب ذلك. لاحظ أيضًا أنه إذا طلبت تجميع JIT فقط
للمطابقة الجزئية (على سبيل المثال ، / jit = 2) لكن لا تقم بتعيين جزئي المعدل على أ
سطر الموضوع ، لن يستخدم هذا التطابق كود JIT لأنه لم يتم تجميع أي منها لـ non-part-part
مطابقة.
إذا نجح تجميع JIT ، فسيتم استخدام رمز JIT المترجم تلقائيًا عند وجود ملف
يتم تشغيل النوع المناسب من المطابقة ، إلا في حالة تحديد خيارات وقت تشغيل غير متوافقة.
لمزيد من المعلومات، راجع pcre2jit توثيق. انظر أيضا جيتستاك المعدل أدناه لـ
طريقة لتحديد حجم مكدس JIT.
إذا كان جيتفاست تم تحديد معدل ، تتم المطابقة باستخدام "المسار السريع" JIT
جهة تعامل، pcre2_jit_match ()، والذي يتخطى بعض عمليات التحقق من الصحة التي يتم إجراؤها بواسطة
pcre2_match ()، وبالطبع لا يعمل عندما لا يكون JIT مدعومًا. لو جيتفاست is
المحدد بدون جيت، jit = 7 يفترض.
إذا كان com.jitverify تم تحديد معدل ، وتظهر المعلومات حول النمط المترجم
ما إذا كان تجميع JIT ناجحًا أم لا. لو com.jitverify محدد بدون جيت,
jit = 7 يفترض. إذا كان تجميع JIT ناجحًا عندما com.jitverify تم تعيين النص "(JIT)"
يضاف إلى سطر الإخراج الأول بعد تطابق أو عدم تطابق عندما تم ترجمة كود JIT
المستخدمة بالفعل في المباراة.
الضبط a محلي
إنّ كافة أنواع عهود الـ / locale يجب أن يحدد المُعدِّل اسم الإعدادات المحلية ، على سبيل المثال:
/ pattern / locale = fr_FR
تم تعيين اللغة المحددة ، pcre2_maketables () يسمى بناء مجموعة من جداول الأحرف
للغة ، ثم يتم تمرير هذا إلى pcre2_compile () عند تجميع العادي
تعبير. يتم استخدام نفس الجداول عند مطابقة سطور الموضوع التالية. ال
/ locale المعدل ينطبق فقط على النمط الذي يظهر عليه ، ولكن يمكن تقديمه في
#نمط الأمر إذا كانت هناك حاجة إلى الإعداد الافتراضي. تعيين جداول الأحرف المحلية والبديلة
هي حصرية متبادلة
عرض النمط ذاكرة
إنّ كافة أنواع عهود الـ /ذاكرة يتسبب المعدل في الحجم بالبايت من الذاكرة المستخدمة للاحتفاظ بالمترجم
نمط ليتم إخراجها. هذا لا يشمل حجم pcre2_code حاجز؛ انه فقط
البيانات المجمعة الفعلية. إذا تم تمرير النمط لاحقًا إلى مترجم JIT ، فإن ملف
حجم كود JIT المترجم هو أيضا الإخراج. هنا مثال:
إعادة> / a (b) c / jit ، الذاكرة
تخصيص الذاكرة (مساحة الرمز): 21
تخصيص الذاكرة (كود JIT): 1910
الحد متداخلة بين قوسين
إنّ كافة أنواع عهود الـ parens_nest_limit يضع المعدل حدًا لعمق الأقواس المتداخلة في ملف
نمط. يؤدي خرق الحد إلى حدوث خطأ في التجميع. الافتراضي للمكتبة هو
يتم ضبطه عند إنشاء PCRE2 ، ولكن pcre2test يعيّن الافتراضي الخاص به وهو 220 ، وهو مطلوب لـ
تشغيل مجموعة الاختبار القياسية.
الحد القادم النمط الطول
إنّ كافة أنواع عهود الـ max_pattern_length يضع التعديل حدًا ، في وحدات التعليمات البرمجية ، لطول النمط الذي
pcre2_compile () سيقبل. يؤدي خرق الحد إلى حدوث خطأ في التجميع. الافتراضي
هو أكبر رقم يمكن أن يحتويه متغير PCRE2_SIZE (بشكل أساسي غير محدود).
باستخدام القادم POSIX غلاف API
إنّ كافة أنواع عهود الـ / posix أسباب المعدل pcre2test لاستدعاء PCRE2 عبر واجهة برمجة تطبيقات غلاف POSIX بدلاً من
API الأصلي الخاص به. هذا يدعم فقط مكتبة 8 بت. لاحظ أنه لا يعني POSIX
دلالات مطابقة ؛ لمزيد من التفاصيل انظر pcre2posix توثيق. عندما يكون POSIX API
قيد الاستخدام ، فإن معدِّلات الأنماط التالية تحدد الخيارات لـ regcomp () وظيفة:
REG_ICASE بدون غلاف
متعدد الأسطر REG_NEWLINE
no_auto_capture REG_NOSUB
نقطة REG_DOTALL)
غير جشع REG_UNGREEDY) هذه الخيارات ليست جزءًا من
ucp REG_UCP) معيار POSIX
utf REG_UTF8)
إنّ كافة أنواع عهود الـ regerror_buffsize يحدد معدل حجم المخزن المؤقت للخطأ الذي تم تمريره إليه
خطأ رجعي () في حالة حدوث خطأ في الترجمة. على سبيل المثال:
/ abc / posix ، regerror_buffsize = 20
هذا يوفر وسيلة لاختبار سلوك خطأ رجعي () عندما يكون المخزن المؤقت صغيرًا جدًا
لرسالة الخطأ. إذا لم يتم تعيين هذا المعدل ، فسيتم استخدام مخزن مؤقت كبير.
إنّ كافة أنواع عهود الـ النص اللاحق و allaftertext معدِّلات الموضوع تعمل كما هو موضح أدناه. كل الآخرين
المعدلات تسبب خطأ.
الاختبار القادم كومة الحرس ميزة
إنّ كافة أنواع عهود الـ / stackguard معدل يستخدم لاختبار استخدام pcre2_set_compile_recursion_guard ()أو المعلم
الوظيفة التي يتم توفيرها لتمكين إمكانية التحقق من توفر المكدس أثناء التجميع
(انظر pcre2api وثائق للحصول على التفاصيل). إذا كان الرقم المحدد بواسطة المعدل هو
أكبر من الصفر ، pcre2_set_compile_recursion_guard () يتم استدعاء لإعداد رد الاتصال من
pcre2_compile () إلى وظيفة محلية. الحجة التي تتلقاها هي التداخل الحالي
عمق الأقواس إذا كانت هذه أكبر من القيمة التي قدمها المعدل ، فإن غير الصفر هو
عاد ، مما تسبب في إحباط التجميع.
باستخدام البديل حرف الجداول
القيمة المحددة لـ /الجداول يجب أن يكون المعدل أحد الأرقام 0 أو 1 أو 2.
يتسبب في تمرير مجموعة محددة من جداول الأحرف المضمنة إليها pcre2_compile (). هذا
يستخدم في اختبارات PCRE2 للتحقق من السلوك باستخدام جداول الأحرف المختلفة. الرقم
تحدد الجداول على النحو التالي:
0 لا تمر بأي جداول ذات أحرف خاصة
1 جداول ASCII الافتراضية ، كما تم توزيعها في
pcre2_chartables.c.dist
2 - مجموعة من الجداول التي تحدد أحرف ISO 8859
في الجدول 2 ، يتم تحديد بعض الأحرف التي يزيد عدد رموزها عن 128 كأحرف ،
الأرقام والمسافات وما إلى ذلك. تعيين جداول الأحرف البديلة والإعدادات المحلية يتم بشكل متبادل
الحصري.
الضبط معين مباراة ضوابط
المُعدِّلات التالية هي بالفعل معدِّلات موضوعية ، وهي موصوفة أدناه. لكن،
قد يتم تضمينها في قائمة تعديل النمط ، وفي هذه الحالة يتم تطبيقها على كل
سطر الموضوع الذي تتم معالجته بهذا النمط. قد لا تظهر في #نمط
أوامر. لا تؤثر هذه المعدلات على عملية التجميع.
النص التالي يظهر النص بعد المباراة
allaftertext يظهر النص بعد اللقطات
allcaptures تظهر كل الأسرى
allusedtext إظهار كل النص الذي تم الرجوع إليه
/ ز المطابقة العالمية
علامة إظهار علامة القيم
استبدال = حدد سلسلة الاستبدال
يعرض startchar شخصية البداية عند الاقتضاء
استخدم replace_extended PCRE2_SUBSTITUTE_EXTENDED
replace_overflow_length استخدم PCRE2_SUBSTITUTE_OVERFLOW_LENGTH
البديل_غير معروف_الشمس استخدم PCRE2_SUBSTITUTE_UNKNOWN_UNSET
استبدل_unset_empty استخدم PCRE2_SUBSTITUTE_UNSET_EMPTY
قد لا تظهر هذه المعدلات في ملف #نمط يأمر. إذا كنت تريدها كإعدادات افتراضية ، فقم بتعيين
لهم في #موضوع أمر.
إنقاذ a جمعت النمط
عندما يكون النمط بامتداد دفع تم تجميع المعدل بنجاح ، يتم دفعه إلى مكدس
من الأنماط المترجمة ، و pcre2test تتوقع أن يحتوي السطر التالي على نمط جديد (أو ملف
الأمر) بدلاً من سطر الموضوع. يتم استخدام هذا المرفق عند حفظ الأنماط المجمعة في
ملف ، كما هو موضح في القسم بعنوان "حفظ واستعادة الأنماط المترجمة"
أدناه. ال دفع المُعدِّل غير متوافق مع مُعدِّلات الترجمة مثل شامل أن
يتصرف في وقت المباراة. يتم تجاهل أي شيء يتم تحديده ، مع ظهور رسالة تحذير ، باستثناء
يحل محل، مما يتسبب في حدوث خطأ. لاحظ أن، com.jitverify، وهو مسموح به ، لا يحمل
من خلال أي مطابقة لاحقة تستخدم هذا النمط.
SUBJECT الصفات التعريفية
المعدلات التي يمكن أن تظهر في سطور الموضوع و #موضوع الأمر من نوعين.
الضبط مباراة الخيارات
المعدِّلات التالية تعيِّن خيارات لـ pcre2_match () or pcre2_dfa_match (). شاهد com.pcreapi
للحصول على وصف لتأثيراتها.
مجموعة مثبتة PCRE2_ANCHORED
مجموعة dfa_restart PCRE2_DFA_RESTART
مجموعة dfa_shortest PCRE2_DFA_SHORTEST
no_utf_check تعيين PCRE2_NO_UTF_CHECK
تعيين notbol PCRE2_NOTBOL
مجموعة PCRE2_NOTEMPTY فارغة
notempty_atstart قم بتعيين PCRE2_NOTEMPTY_ATSTART
مجموعة noteol PCRE2_NOTEOL
مجموعة part_hard (أو الرقم الهيدروجيني) PCRE2_PARTIAL_HARD
مجموعة جزئي_لينة (أو ps) PCRE2_PARTIAL_SOFT
يتم توفير معدِّلات المطابقة الجزئية مع الاختصارات لأنها تظهر
كثيرًا في الاختبارات.
إذا كان / posix كان المُعدِّل موجودًا على النمط ، مما تسبب في وجود واجهة برمجة تطبيقات غلاف POSIX
المستخدمة ، تعد معدّلات إعداد الخيار الوحيدة التي لها أي تأثير هي notbol, not فارغو
نوتول، مما تسبب في تمرير REG_NOTBOL و REG_NOTEMPTY و REG_NOTEOL ، على التوالي ، إلى
regexec (). أي معدلات أخرى تسبب خطأ.
الضبط مباراة ضوابط
تؤثر المعدلات التالية على عملية المطابقة أو تطلب معلومات إضافية.
يمكن أيضًا تحديد بعضها على خط نمط (انظر أعلاه) ، وفي هذه الحالة يتم تطبيقها
لكل سطر موضوع يتم مطابقته مع هذا النمط.
النص التالي يظهر النص بعد المباراة
allaftertext يظهر النص بعد اللقطات
allcaptures تظهر كل الأسرى
allusedtext إظهار كل النص الذي تمت استشارته (ليس JIT فقط)
البديل العالمي البديل للمطابقة
عرض callout_capture يلتقط في وقت وسيلة الشرح
callout_data = تعيين قيمة لتمريرها عبر وسائل الشرح
callout_fail = [: ] فشل التحكم في وسيلة الشرح
لا تقدم callout_none وظيفة شرح
نسخ = نسخ سلسلة فرعية تم التقاطها
استخدام dfa pcre2_dfa_match ()
find_limits تجد حدود المطابقة والتكرار
الحصول على = استخراج السلسلة الفرعية التي تم التقاطها
getall استخراج جميع السلاسل الفرعية الملتقطة
/ ز المطابقة العالمية
jitstack = تعيين حجم مكدس JIT
علامة إظهار علامة القيم
match_limit = وضع حد المباراة
تظهر الذاكرة استخدام الذاكرة
تتطابق null_context مع سياق NULL
تعويض = تعيين بداية الإزاحة
offset_limit = تعيين حد تعويض
البويضة = تعيين حجم متجه الإخراج
recursion_limit = تعيين حد العودية
استبدال = حدد سلسلة الاستبدال
startchar تظهر startchar عند الاقتضاء
بداية = نفس الإزاحة =
استخدم البديل_النصوي PCRE2_SUBSTITUTE_EXTENDED
replace_overflow_length استخدم PCRE2_SUBSTITUTE_OVERFLOW_LENGTH
البديل_غير معروف_الشمس استخدم PCRE2_SUBSTITUTE_UNKNOWN_UNSET
استبدل_unset_empty استخدم PCRE2_SUBSTITUTE_UNSET_EMPTY
zero_terminate قم بتمرير الموضوع باعتباره صفرًا منتهيًا
تم وصف تأثيرات هذه المعدلات في الأقسام التالية.
عرض الأكثر من ذلك نص
إنّ كافة أنواع عهود الـ النص اللاحق يطلب التعديل ذلك بالإضافة إلى إخراج جزء من سلسلة الموضوع
التي تتطابق مع النمط بأكمله ، pcre2test يجب بالإضافة إلى إخراج ما تبقى من
سلسلة الموضوع. هذا مفيد للاختبارات حيث يحتوي الموضوع على نسخ متعددة من
نفس السلسلة الفرعية. ال allaftertext يطلب المعدل نفس الإجراء للسلاسل الفرعية الملتقطة
بالإضافة إلى السلسلة الفرعية الرئيسية المتطابقة. في كل حالة يتم إخراج الباقي على
السطر التالي بحرف زائد يتبع رقم الالتقاط.
إنّ كافة أنواع عهود الـ allusedtext يطلب المعدل أن كل النص الذي تمت استشارته أثناء نجاح
يجب إظهار تطابق النمط بواسطة المترجم. هذه الميزة غير مدعومة لـ JIT
المطابقة ، وإذا طلبت مع JIT يتم تجاهلها (مع رسالة تحذير). تحديد هذا
يؤثر التعديل على الإخراج إذا كان هناك بحث خلفي في بداية المباراة ، أو
lookahead في النهاية ، أو إذا تم استخدام \ K في النمط. الشخصيات التي تسبق أو تتبع
يشار إلى بداية ونهاية المباراة الفعلية في الإخراج بواسطة الأحرف "<" أو ">"
تحتها. هنا مثال:
إعادة> / (؟ <= pqr) abc (؟ = xyz) /
البيانات> 123pqrabcxyz456 \ = allusedtext
0: بقرابككسيز
<<< >>>
يوضح هذا أن السلسلة المطابقة هي "abc" ، مع السلاسل السابقة والتالية
تم استشارة "pqr" و "xyz" أثناء المباراة (عند معالجة التأكيدات).
إنّ كافة أنواع عهود الـ com.startchar يطلب معدِّل الإشارة إلى حرف البداية للمباراة ، إذا
يختلف عن بداية السلسلة المتطابقة. الوقت الوحيد الذي يحدث فيه هذا هو متى
تمت معالجة \ K كجزء من المباراة. في هذه الحالة ، يكون إخراج المطابقة
يتم عرض السلسلة من حرف البداية بدلاً من نقطة المطابقة ، مع
أحرف محيطية أسفل الأحرف السابقة. على سبيل المثال:
إعادة> / abc \ Kxyz /
البيانات> abcxyz \ = startchar
0: أبكزيز
^^^
الغاء الاعجاب allusedtextأطلقت حملة com.startchar يمكن استخدام المعدل مع JIT. ومع ذلك ، فإن هذين
المعدلات متنافية.
عرض القادم قيمنا of الكل أسر مجموعات
إنّ كافة أنواع عهود الـ com.allcaptures يطلب المعدل أن تكون قيم جميع الأقواس الملتقطة المحتملة
الإخراج بعد المباراة. بشكل افتراضي ، فقط أولئك الذين يصلون إلى أعلى مستوى مستخدم فعليًا في ملف
المطابقة هي الإخراج (المقابلة لرمز الإرجاع من pcre2_match ()). المجموعات التي فعلت ذلك
عدم المشاركة في المباراة يتم إخراجها كـ " ".
الاختبار وسائل الشرح
يتم توفير وظيفة شرح عندما pcre2test يستدعي وظائف المطابقة في المكتبة ، ما لم يكن
callout_none محدد. لو callout_capture يتم تعيين المجموعات التي تم التقاطها حاليًا
الإخراج عند حدوث وسيلة شرح.
إنّ كافة أنواع عهود الـ callout_fail يمكن إعطاء معدل واحد أو رقمين. إذا كان هناك رقم واحد فقط ، 1
يتم إرجاعه بدلاً من 0 عند الوصول إلى وسيلة شرح لهذا الرقم. إذا كان هناك رقمان
معطى ، يتم إرجاع 1 عند وسيلة الشرح تم الوصول إليه من أجل الوقت ال. لاحظ أن وسائل الشرح
مع وسيطات السلسلة يتم دائمًا إعطاء الرقم صفر. انظر "وسائل الشرح" أدناه للحصول على
وصف الناتج عند إجراء وسيلة شرح.
إنّ كافة أنواع عهود الـ callout_data يمكن إعطاء المعدل رقمًا غير موقع أو رقمًا سالبًا. تم تعيين هذا على النحو
"بيانات المستخدم" التي يتم تمريرها إلى وظيفة المطابقة ، ويتم تمريرها مرة أخرى عند وسيلة الشرح
تم استدعاء الوظيفة. يتم استخدام أي قيمة بخلاف الصفر كعائد من pcre2test's
وظيفة شرح.
العثور على الكل اعواد الثقاب in a سلسلة
يمكن طلب البحث عن جميع التطابقات الممكنة داخل موضوع ما بواسطة شامل or
/ altglobal المعدل. بعد العثور على تطابق ، يتم استدعاء وظيفة المطابقة مرة أخرى إلى
ابحث في باقي الموضوع. الفرق بين شامل و com.altglobal غير أن
السابق يستخدم start_offset حجة ل pcre2_match () or pcre2_dfa_match () لبدء
البحث في نقطة جديدة ضمن السلسلة بأكملها (وهو ما تفعله Perl) ، في حين أن
الأخير يمر على موضوع مختصر. هذا يحدث فرقًا في عملية المطابقة إذا
يبدأ النمط بتأكيد بحث خلفي (بما في ذلك \ b أو \ B).
في حالة مطابقة سلسلة فارغة ، تتم المطابقة التالية مع PCRE2_NOTEMPTY_ATSTART و
تم تعيين أعلام PCRE2_ANCHORED ، من أجل البحث عن تطابق آخر غير فارغ في نفس الوقت
نقطة في الموضوع. إذا فشلت هذه المباراة ، فإن إزاحة البداية تكون متقدمة ، والعادي
تمت إعادة محاولة المباراة. هذا يقلد الطريقة التي تتعامل بها Perl مع مثل هذه الحالات عند استخدام ملف /g تغيير
أو ال ينقسم() وظيفة. عادة ، يتم تقديم إزاحة البداية بحرف واحد ، ولكن إذا
يتعرف اصطلاح السطر الجديد على CRLF كسطر جديد ، والحرف الحالي هو CR
متبوعًا بـ LF ، يحدث تقدم مكون من حرفين.
الاختبار سلسلة فرعية استخلاص وظائف
إنّ كافة أنواع عهود الـ نسخة و دولار فقط واحصل على خصم XNUMX% على جميع يمكن استخدام المعدلات لاختبار pcre2_substring_copy_xxx () و
pcre2_substring_get_xxx () المهام. يمكن إعطاؤهم أكثر من مرة ، ويمكن لكل منهم
حدد اسم المجموعة أو الرقم ، على سبيل المثال:
abcd \ = نسخ = 1 ، نسخ = 3 ، الحصول على = G1
إذا كان #موضوع يتم استخدام الأمر لتعيين نسخة افتراضية و / أو الحصول على قوائم ، ويمكن إلغاء تعيينها
بتحديد رقم سالب لإلغاء كل المجموعات المرقمة واسم فارغ للإلغاء
كل المجموعات المسماة.
إنّ كافة أنواع عهود الـ com.getall اختبارات المعدل pcre2_substring_list_get ()، والذي يستخرج كل ما تم التقاطه
سلاسل فرعية.
إذا تمت مطابقة سطر الموضوع بنجاح ، فسيتم استخراج السلاسل الفرعية من خلال الملاءمة
يتم إخراج الدوال باستخدام C أو G أو L بعد رقم السلسلة بدلاً من النقطتين. هذا هو
بالإضافة إلى القائمة الكاملة العادية. طول السلسلة (أي العائد من ملف
دالة الاستخراج) بين قوسين بعد كل سلسلة فرعية ، متبوعة بالاسم
عندما تم الاستخراج بالاسم.
الاختبار القادم الاستبدال وظيفة
إذا كان يحل محل تم تعيين المعدل ، pcre2_substitute () يتم استدعاء الوظيفة بدلاً من واحدة
من وظائف المطابقة. لاحظ أن السلاسل البديلة لا يمكن أن تحتوي على فواصل ، لأن ملف
تشير الفاصلة إلى نهاية المُعدِّل. لا يُعتقد أن هذه مشكلة في الاختبار
برنامج.
على عكس سلاسل الموضوع ، pcre2test لا يعالج سلاسل الاستبدال للهروب
التسلسلات. في وضع UTF ، يتم فحص سلسلة الاستبدال لمعرفة ما إذا كانت UTF-8 صالحة
خيط. إذا كان الأمر كذلك ، يتم تحويله بشكل صحيح إلى سلسلة UTF لوحدة الكود المناسبة
عرض. إذا لم تكن سلسلة UTF-8 صالحة ، فسيتم نسخ وحدات الكود الفردية مباشرةً.
يوفر هذا وسيلة لتمرير سلسلة UTF-8 غير صالحة لأغراض الاختبار.
تقوم المعدلات التالية بتعيين الخيارات (بالإضافة إلى خيارات المطابقة العادية) لـ
pcre2_substitute ():
PCRE2_SUBSTITUTE_GLOBAL العالمية
استبدل_ممتد PCRE2_SUBSTITUTE_EXTENDED
البديل_overflow_length PCRE2_SUBSTITUTE_OVERFLOW_LENGTH
بديل_غير معروف_غروبته PCRE2_SUBSTITUTE_UNKNOWN_UNSET
استبدل_unset_empty PCRE2_SUBSTITUTE_UNSET_EMPTY
بعد استبدال ناجح ، يتم إخراج السلسلة المعدلة ، مسبوقة بعدد
بدائل. قد يكون هذا صفرًا إذا لم تكن هناك مطابقات. فيما يلي مثال بسيط على ملف
اختبار الاستبدال:
/ abc / replace = xxx
= abc = abc =
1: = xxx = abc =
= abc = abc = \ = global
2: = xxx = xxx =
يجب أن تبقى سلاسل الموضوع والاستبدال قصيرة نسبيًا (أقل من 256
الأحرف) لاختبارات الاستبدال ، حيث يتم استخدام مخازن مؤقتة ذات حجم ثابت. لجعلها سهلة
اختبار تجاوز سعة المخزن المؤقت ، إذا كانت سلسلة الاستبدال تبدأ برقم في المربع
بين قوسين ، يتم تمرير هذا الرقم إلى pcre2_substitute () كحجم المخزن المؤقت للإخراج ،
مع سلسلة الاستبدال التي تبدأ من الحرف التالي. هنا مثال يختبر
حالة الحافة:
/ abc /
123abc123 \ = استبدال = [10] XYZ
1: 123XYZ123
123abc123 \ = استبدال = [9] XYZ
فشل: خطأ -47: لا مزيد من الذاكرة
الإجراء الافتراضي لـ pcre2_substitute () هو إرجاع PCRE2_ERROR_NOMEMORY عند الإخراج
المخزن المؤقت صغير جدًا. ومع ذلك ، إذا تم تعيين خيار PCRE2_SUBSTITUTE_OVERFLOW_LENGTH (بواسطة
يستخدم ال استبدال_الزيادة_الطول المعدل)، pcre2_substitute () تواصل من خلال
حركات المطابقة والاستبدال ، من أجل حساب حجم المخزن المؤقت
مطلوب. عندما يحدث هذا ، pcre2test يُظهر طول المخزن المؤقت المطلوب (والذي يتضمن
مسافة للصفر الزائدة) كجزء من رسالة الخطأ. على سبيل المثال:
/ abc / replace_overflow_length
123abc123 \ = استبدال = [9] XYZ
فشل: خطأ -47: لا مزيد من الذاكرة: هناك حاجة إلى 10 وحدات رمز
يتم تجاهل سلسلة الاستبدال مع مطابقة POSIX و DFA. تحديد المطابقة الجزئية
يتسبب في إرجاع خطأ ("قيمة خيار غير صالحة") من pcre2_substitute ().
الضبط القادم JIT كومة المقاس
إنّ كافة أنواع عهود الـ جيتستاك يوفر المُعدِّل طريقة لتعيين الحد الأقصى لحجم المكدس الذي يستخدمه ملف
رمز التحسين في الوقت المناسب. يتم تجاهله إذا لم يتم استخدام تحسين JIT. ال
القيمة هي عدد كيلو بايت. توفير مكدس أكبر من الافتراضي 32 كيلو بايت
ضروري فقط للأنماط المعقدة للغاية.
الضبط مباراة و العودية حدود
إنّ كافة أنواع عهود الـ تطابق_حد و recursion_limit المعدلات تضع الحدود المناسبة في المباراة
سياق. يتم تجاهل هذه القيم عندما يكون ملف find_limits تم تحديد المعدل.
العثور على الحد الأدنى حدود
إذا كان find_limits المعدل موجود ، pcre2test المكالمات pcre2_match () عدة مرات ،
تحديد قيم مختلفة في سياق المباراة عبر pcre2_set_match_limit () و
pcre2_set_recursion_limit () حتى يجد القيم الدنيا لكل معلمة
السماح pcre2_match () لإكمال دون خطأ.
في حالة استخدام JIT ، يكون حد المطابقة فقط ذا صلة. إذا تم استخدام مطابقة DFA ،
لا يعتبر أي من الحدين مناسبًا ، ويتم تجاهل هذا المعدل (مع رسالة تحذير).
إنّ كافة أنواع عهود الـ تطابق_حد الرقم هو مقياس لمقدار التراجع الذي يحدث ، و
تعلم الحد الأدنى من القيمة يمكن أن يكون مفيدًا. بالنسبة لمعظم التطابقات البسيطة ، يكون الرقم هو
صغير جدًا ، ولكن بالنسبة للأنماط التي تحتوي على أعداد كبيرة جدًا من احتمالات المطابقة ، يمكن ذلك
تصبح كبيرة بسرعة كبيرة مع زيادة طول سلسلة الهدف. ال
match_limit_recursion number هو مقياس لمقدار المكدس (أو إذا تم تجميع PCRE2 مع
NO_RECURSE ، مقدار الكومة) الذاكرة المطلوبة لإكمال محاولة المطابقة.
عرض علامة الأسماء
إنّ كافة أنواع عهود الـ علامة يتسبب التعديل في الأسماء من أفعال التحكم التي يتم إرجاعها من الخلف
مكالمات إلى pcre2_match () ليتم عرضها. إذا تم إرجاع علامة لمباراة أو غير مطابقة أو
تطابق جزئي pcre2test يظهر ذلك. بالنسبة للمباراة ، يتم وضع علامة على سطر بمفرده ، بعلامة
"MK:". خلاف ذلك ، يتم إضافته إلى الرسالة غير المطابقة.
عرض ذاكرة استعمال
إنّ كافة أنواع عهود الـ ذاكرة أسباب المعدل pcre2test لتسجيل كل تخصيص الذاكرة وتحرير المكالمات
تحدث أثناء عملية المباراة.
الضبط a بدء عوض
إنّ كافة أنواع عهود الـ عوض يعيّن المُعدِّل إزاحة في سلسلة الموضوع التي تبدأ عندها المطابقة. إنه
القيمة هي عدد وحدات الكود ، وليس الأحرف.
الضبط an عوض قصر
إنّ كافة أنواع عهود الـ Offset_limit المعدل يضع حدًا للمطابقات غير المحمية. إذا تعذر العثور على تطابق
بدءًا من هذه الإزاحة أو قبلها في الموضوع ، يتم إرجاع "عدم تطابق". البيانات
القيمة هي عدد وحدات الكود ، وليس الأحرف. عند استخدام هذا المعدل ، فإن ملف
use_offset_limit يجب أن يكون المعدل قد تم ضبطه للنمط ؛ إذا لم يكن كذلك ، فإن الخطأ هو
ولدت.
الضبط القادم المقاس of القادم الناتج ناقلات
إنّ كافة أنواع عهود الـ مبيض المعدل ينطبق فقط على سطر الموضوع الذي يظهر فيه ، على الرغم من
بالطبع يمكن استخدامه أيضًا لتعيين افتراضي في ملف #موضوع يأمر. تحدد الرقم
من أزواج التعويضات المتاحة لتخزين معلومات المطابقة. الافتراضي هو
15.
تكون القيمة الصفرية مفيدة عند اختبار POSIX API لأنها تسبب regexec () أن تكون
دعا مع ناقل التقاط NULL. عند عدم اختبار POSIX API ، يتم استخدام قيمة صفر
تسبب pcre2_match_data_create_from_pattern () ليتم استدعاؤها ، من أجل خلق مباراة
كتلة بالحجم المناسب تمامًا للنمط. (لا يمكن إنشاء تطابق
كتلة مع البويضة ذات الطول الصفري ؛ هناك دائمًا زوج واحد على الأقل من التعويضات.)
مرور القادم موضوع as صفرية منتهية
بشكل افتراضي ، يتم تمرير سلسلة الموضوع إلى وظيفة مطابقة API أصلية مع
الطول الصحيح. من أجل اختبار الوسيلة لتمرير سلسلة صفرية منتهية ، فإن
صفر_انهاية يتم توفير معدل. يتسبب في تمرير الطول كـ
PCRE2_ZERO_TERMINATED. (عند المطابقة عبر واجهة POSIX ، لا يحتوي هذا المعدل على
التأثير ، حيث لا توجد وسيلة لتمرير الطول.)
عند الاختبار pcre2_substitute ()، هذا المعدل له أيضًا تأثير تمرير
سلسلة الاستبدال على أنها صفرية منتهية.
مرور a اغية سياق الكلام
عادة، pcre2test يمرر كتلة سياق إلى pcre2_match (), pcre2_dfa_match () or
pcre2_jit_match (). إذا كان null_context تم تعيين المعدل ، ومع ذلك ، يتم تمرير NULL. هذا هو
لاختبار أن وظائف المطابقة تتصرف بشكل صحيح في هذه الحالة (تستخدم افتراضيًا
قيم). لا يمكن استخدام هذا المعدل مع امتداد find_limits المعدل أو عند اختبار
وظيفة الاستبدال.
ال لبديل مطابقة FUNCTION
افتراضيا، pcre2test يستخدم وظيفة مطابقة PCRE2 القياسية ، pcre2_match () لمطابقة
كل سطر موضوع. يدعم PCRE2 أيضًا وظيفة مطابقة بديلة ،
pcre2_dfa_match ()التي تعمل بطريقة مختلفة ولها بعض القيود. ال
تم وصف الاختلافات بين الوظيفتين في com.pcre2matching كابل بيانات.
إذا كان DFA تم تعيين المعدل ، يتم استخدام وظيفة المطابقة البديلة. هذه الوظيفة
يجد كل التطابقات الممكنة في نقطة معينة في الموضوع. ومع ذلك ، إذا كان dfa_shortest
تم تعيين المعدل ، توقف المعالجة بعد العثور على أول تطابق. هذا هو دائمًا ملف
أقصر مباراة ممكنة.
DEFAULT OUTPUT من عند pcre2test
يصف هذا القسم الإخراج عندما تكون وظيفة المطابقة العادية ، pcre2_match ()، هل
تم استخدامها.
عندما تنجح المباراة ، pcre2test لإخراج قائمة السلاسل الفرعية الملتقطة ، بدءًا من
الرقم 0 للسلسلة التي تطابق النمط بأكمله. خلاف ذلك ، فإنه ينتج "لا يوجد تطابق"
عندما يكون العائد هو PCRE2_ERROR_NOMATCH ، أو "مطابقة جزئية:" متبوعًا بجزء
مطابقة السلسلة الفرعية عندما يكون العائد PCRE2_ERROR_PARTIAL. (لاحظ أن هذا هو كامل
السلسلة الفرعية التي تم فحصها أثناء المباراة الجزئية ؛ قد تتضمن أحرفًا من قبل
تبدأ المطابقة الفعلية في حالة تضمين تأكيد بحث خلفي ، \ K ، \ b ، أو \ B.)
لأي عائد آخر ، pcre2test لإخراج رقم خطأ سالب PCRE2 وقصير
عبارة وصفية. إذا كان الخطأ عبارة عن فحص فاشل لسلسلة UTF ، فسيتم إزاحة وحدة التعليمات البرمجية لـ
يتم أيضًا إخراج بداية الحرف الفاشل. هنا مثال تفاعلي
pcre2test يركض.
pcre2test دولار
إصدار PCRE2 9.00 2014/05/10
إعادة> / ^ abc (\ d +) /
البيانات> abc123
0: اي بي سي 123
شنومكس: شنومكس
البيانات> xyz
لا تطابق
لا يتم عرض سلاسل الالتقاط الفرعية التي لم يتم اتباعها من قبل التي تم تعيينها بواسطة
pcre2test ما لم يكن com.allcaptures تم تحديد المعدل. في المثال التالي ، هناك
هما سلسلتان فرعيتان ، ولكن عند مطابقة سطر البيانات الأول ، فإن الثاني غير مضبوط
لا يتم عرض السلسلة الفرعية. يتم عرض سلسلة فرعية "داخلية" غير محددة بالشكل " "، أما بالنسبة لل
خط البيانات الثاني.
إعادة> / (أ) | (ب) /
البيانات> أ
0: أ
1: أ
البيانات> ب
0: ب
1:
2: ب
إذا كانت السلاسل تحتوي على أي أحرف غير قابلة للطباعة ، فسيتم إخراجها على أنها \ xhh escapes إذا كان الملف
القيمة أقل من 256 ولم يتم تعيين وضع UTF. وإلا فسيتم إخراجها كـ \ x {hh ...}
يهرب. انظر أدناه للتعرف على الأحرف غير المطبوعة. إذا كان / بعد النص
تم تعيين المعدل ، يتبع إخراج السلسلة الفرعية 0 بقية الموضوع
سلسلة مُعرَّفة بـ "0+" مثل هذا:
إعادة> / القط / بعد النص
البيانات> الساد
0: قطة
0+ حرف
إذا تم طلب المطابقة العامة ، فسيتم إخراج نتائج محاولات المطابقة المتتالية
التسلسل ، مثل هذا:
إعادة> / \ Bi (\ w \ w) / g
البيانات> ميسيسيبي
0: إصدار
1: ق.س
0: إصدار
1: ق.س
0: إب
1: ص
يتم إخراج "بلا تطابق" فقط في حالة فشل محاولة المطابقة الأولى. هنا مثال على ملف
رسالة الفشل (الإزاحة 4 التي تم تحديدها بواسطة عوض معدل تجاوز نهاية
سلسلة الموضوع):
إعادة> / xyz /
البيانات> xyz \ = offset = 4
خطأ -24 (قيمة إزاحة غير صالحة)
لاحظ أنه بينما يمكن أن تستمر الأنماط عبر عدة أسطر (يتم استخدام موجه ">" عادي
للاستمرار) ، قد لا تكون سطور الموضوع. ومع ذلك ، يمكن تضمين الأسطر الجديدة في الموضوع
عن طريق \ n الهروب (أو \ r ، \ r \ n ، إلخ ، حسب إعداد تسلسل السطر الجديد).
OUTPUT من عند ال لبديل مطابقة FUNCTION
عندما تكون وظيفة المطابقة البديلة ، pcre2_dfa_match ()يستخدم الإخراج يتكون من
قائمة بجميع التطابقات التي تبدأ عند النقطة الأولى في الموضوع حيث يوجد عند
مباراة واحدة على الأقل. على سبيل المثال:
إعادة> / (تانغ | اليوسفي | تان) /
البيانات> اليوسفي الأصفر \ = dfa
0: اليوسفي
1: تانغ
2: تان
يؤدي استخدام وظيفة المطابقة العادية في هذه البيانات إلى العثور على "tang" فقط. أطول مطابقة
يتم إعطاء السلسلة دائمًا أولاً (ومرقمة بصفر). بعد عودة PCRE2_ERROR_PARTIAL ، فإن ملف
الإخراج هو "مطابقة جزئية:" ، متبوعًا بسلسلة فرعية مطابقة جزئيًا. لاحظ أن هذا
هي السلسلة الفرعية بأكملها التي تم فحصها أثناء المباراة الجزئية ؛ قد تشمل
قبل بدء المطابقة الفعلية إذا كان تأكيد البحث الخلفي ، \ b ، أو \ B كذلك
متضمن. (لا يتم دعم \ K لمطابقة DFA.)
إذا تم طلب المطابقة العامة ، فسيتم استئناف البحث عن المزيد من التطابقات في نهاية ملف
أطول مباراة. على سبيل المثال:
إعادة> / (tang | اليوسفي | تان) / ز
البيانات> اليوسفي الأصفر والسلطانة المنعشة \ = dfa
0: اليوسفي
1: تانغ
2: تان
0: تانغ
1: تان
0: تان
لا تدعم وظيفة المطابقة البديلة التقاط السلاسل الفرعية ، وبالتالي فإن المُعدِّلات
التي تتعلق بالسلاسل الفرعية الملتقطة ليست ذات صلة.
إعادة التشغيل AFTER A جزئي MATCH
عندما تعطي وظيفة المطابقة البديلة إرجاع PCRE2_ERROR_PARTIAL ،
مشيرًا إلى أن الموضوع يتطابق جزئيًا مع النمط ، يمكنك إعادة تشغيل المطابقة باستخدام
بيانات الموضوع الإضافية عن طريق dfa_restart المعدل. على سبيل المثال:
إعادة> / ^ \ d؟ \ d (يناير | فبراير | مار | أبريل | مايو | يونيو | يوليو | أغسطس | سبتمبر | أكتوبر | نوفمبر | ديسمبر) \ د \ د $ /
البيانات> 23ja \ = P، dfa
مباراة جزئية: 23ja
البيانات> n05 \ = dfa ، dfa_restart
0: ن05
لمزيد من المعلومات حول المطابقة الجزئية ، راجع pcre2partial كابل بيانات.
نداءات
إذا كان النمط يحتوي على أي طلبات شرح ، pcre2testيتم استدعاء وظيفة وسيلة الشرح
أثناء المطابقة ما لم يكن callout_none محدد. هذا يعمل مع كل من المطابقة
الوظائف.
وظيفة الشرح في pcre2test تُرجع صفرًا (الاستمرار في المطابقة) افتراضيًا ، لكن يمكنك ذلك
إستخدم callout_fail المعدل في سطر الموضوع (كما هو موضح أعلاه) لتغيير هذا و
معلمات أخرى لوسائل الشرح.
يمكن أن يكون إدراج وسائل الشرح مفيدًا عند استخدام pcre2test للتحقق العادية المعقدة
التعبيرات. لمزيد من المعلومات حول وسائل الشرح ، انظر pcre2callout كابل بيانات.
ناتج وسائل الشرح ذات الوسيطات العددية وتلك التي تحتوي على وسيطات السلسلة هو
مختلفة قليلا.
الشرح مع عددي الحجج
بشكل افتراضي ، تعرض وظيفة وسيلة الشرح رقم وسيلة الشرح ، البداية والحالية
مواضع في نص الموضوع في وقت وسيلة الشرح ، وعنصر النمط التالي المراد اختباره.
فمثلا:
---> pqrabcdef
0 ^ ^ \ د
يشير هذا الإخراج إلى أن رقم وسيلة الشرح 0 حدث لمحاولة مطابقة تبدأ في
الحرف الرابع من سلسلة الموضوع ، عندما يكون المؤشر عند الحرف السابع ، و
عندما كان عنصر النمط التالي \ d. يتم إخراج محيط واحد فقط إذا كانت البداية والحالية
المواقف هي نفسها.
من المفترض أن تكون وسائل الشرح المرقمة 255 وسائل شرح تلقائية ، تم إدراجها كنتيجة لـ
/ auto_callout معدل النمط. في هذه الحالة ، بدلاً من إظهار رقم وسيلة الشرح ، فإن ملف
الإزاحة في النموذج ، مسبوقة بعلامة الجمع ، هي الإخراج. على سبيل المثال:
re> / \ d؟ [AE] \ * / auto_callout
البيانات> E *
-> ه *
+0 ^ \ د؟
+3 ^ [AE]
+8 ^ \ *
+10 ^ ^
0: E *
إذا احتوى النمط على عناصر (* MARK) ، فسيتم إخراج سطر إضافي كلما تم تغيير
يتم تمرير أحدث علامة إلى وظيفة وسيلة الشرح. على سبيل المثال:
إعادة> / a (* MARK: X) bc / auto_callout
البيانات> abc
---> abc
+0 ^ أ
+1 ^ ^ (* علامة: X)
+10 ^ ^ ب
أحدث علامة: X
+11 ^ ^ ج
+12 ^ ^
0: أبج
تتغير العلامة بين مطابقة "أ" و "ب" ، لكنها تظل كما هي لبقية
تطابق ، لذلك لا شيء أكثر من الإخراج. إذا ، نتيجة التراجع ، عادت العلامة إلى
عدم ضبط النص " "هو الإخراج.
الشرح مع سلسلة الحجج
يكون إخراج وسيلة الشرح باستخدام وسيطة سلسلة متشابهة ، باستثناء ذلك بدلاً من
إخراج رقم وسيلة شرح قبل مؤشرات الموضع وسلسلة وسيلة الشرح و
offset في سلسلة النمط يتم إخراجها قبل انعكاس سلسلة الهدف ، و
تنعكس سلسلة الموضوع لكل وسيلة شرح. على سبيل المثال:
re> / ^ ab (؟ C'first ') cd (؟ C "second") ef /
البيانات> abcdefg
وسيلة الشرح (7): "الأول"
—-> أبجدفغ
^ ^ ج
وسيلة الشرح (20): "الثانية"
—-> أبجدفغ
^ ^ هـ
0: اي بي سي ديف
عدم الطباعة الشخصيات
متى pcre2test يقوم بإخراج النص في النسخة المترجمة من النمط، بخلاف وحدات البايت
يتم دائمًا التعامل مع 32-126 كأحرف غير مطبوعة وبالتالي يتم عرضها على شكل سداسي عشري
يهرب.
متى pcre2test يقوم بإخراج نص يمثل جزءًا مطابقًا من سلسلة الموضوع، فإنه يتصرف
بنفس الطريقة ، ما لم يتم تعيين لغة مختلفة للنمط (باستخدام امتداد / locale
المعدل). في هذه الحالة ، فإن ملف isprint () تستخدم الوظيفة للتمييز بين الطباعة وغير
أحرف الطباعة.
إنقاذ لأي لبس استعادة تجميع وانتاج أنماط - رسم
من الممكن حفظ الأنماط المترجمة على القرص أو في أي مكان آخر ، وإعادة تحميلها لاحقًا ،
تخضع لعدد من القيود. لا يمكن حفظ بيانات JIT. المضيف الذي
يجب أن تعمل الأنماط التي يتم إعادة تحميلها على نفس الإصدار من PCRE2، مع نفس وحدة الكود
العرض، ويجب أن يكون له أيضًا نفس endianness وعرض المؤشر ونوع PCRE2_SIZE. قبل
يمكن حفظ الأنماط المجمعة يجب أن تكون متسلسلة ، أي تحويلها إلى دفق من
بايت. قد يحتوي دفق البايت الواحد على أي عدد من الأنماط المترجمة، لكن يجب أن تحتوي جميعها
استخدم نفس جداول الأحرف. يتم تضمين نسخة واحدة من الجداول في دفق البايت
(حجمه 1088 بايت).
الوظائف التي تبدأ أسماؤها بـ pcre2_serialize_ تستخدم للتسلسل وإلغاء
التسلسل. تم وصفها في pcre2serialize توثيق. في هذا القسم نحن
صف ميزات pcre2test التي يمكن استخدامها لاختبار هذه الوظائف.
عندما يكون النمط مع دفع تم تجميع المعدل بنجاح، ويتم دفعه إلى كومة من
الأنماط المجمعة، و pcre2test تتوقع أن يحتوي السطر التالي على نمط جديد (أو
الأمر) بدلاً من سطر الموضوع. بهذه الوسائل ، يمكن تجميع عدد من الأنماط
والاحتفاظ بها. ال دفع المعدل غير متوافق مع POSIX، ومعدلات التحكم التي تعمل
في وقت المباراة يتم تجاهلها (برسالة). ال com.jitverify المعدل ينطبق فقط على الترجمة
وقت. الامر
#يحفظ
يؤدي إلى إجراء تسلسل لجميع الأنماط المكدسة وكتابة النتيجة في الملف المحدد.
بعد ذلك ، يتم تحرير جميع الأنماط المكدسة. الامر
#حمولة
يقرأ البيانات الموجودة في الملف، ثم يرتب لإلغاء تسلسلها باستخدام الملف
تمت إضافة الأنماط المجمعة الناتجة إلى مكدس الأنماط. النمط الموجود في الجزء العلوي من
يمكن استرداد المكدس عن طريق الأمر #pop، الذي يجب أن يتبعه سطور من المواضيع
التي يجب مطابقتها مع النمط ، يتم إنهاؤها كالمعتاد بسطر فارغ أو نهاية
ملف. قد يتبع هذا الأمر قائمة معدِّلات تحتوي فقط على معدِّلات تحكم
التي تعمل بعد أن تم تجميع النمط. بخاصة، عرافة, POSIXو دفع ليست
مسموح بها ، ولا أي معدِّلات لإعداد الخيارات. معدلات JIT ، ومع ذلك مسموح بها.
هذا مثال يحفظ ويعيد تحميل نمطين.
/ abc / push
/xyz/push
#حفظ الملف المؤقت
#تحميل الملف المؤقت
#معلومات البوب
XYZ
#pop جيت،bincode
اي بي سي
If com.jitverify يتم استخدامه مع #pop ، فهو لا يعني تلقائيًا جيت، وهو أمر مختلف
السلوك من عند استخدامه على نمط.
استخدم pcre2test عبر الإنترنت باستخدام خدمات onworks.net
