الدالة re.subn()‎ في بايثون‎

من موسوعة حسوب
< Python‏ | re
مراجعة 10:05، 2 يونيو 2018 بواسطة Mohammed Taher (نقاش | مساهمات) (أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE:الدالة <code>re.subn()‎</code> في بايثون‎}}</noinclude> ؤدي هذه الدالة نفس عمل الدالة re.sub()‎ و...')
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)

ؤدي هذه الدالة نفس عمل الدالة re.sub()‎ ولكنّها تعيد الناتج على هيئة صفّ (السلسلة الجديدة، عدد الاستبدالات المجراة).

البنية العامة

re.subn(pattern, repl, string, count=0, flags=0)

المعاملات

pattern

التعبير النمطي المستخدم لإجراء عملية المطابقة. يمكن للنمط أن يكون سلسلة نصية أو كائن نمط pattern object.

repl

يمكن للبديل repl أن يكون سلسلة نصية أو دالة، وإن كان سلسلة نصية، فإنّ الدالة تعالج جميع المحارف المهرّبة فيها. بمعنى أنّ ‎\n تحوّل إلى محرف سطر جديد مفرد، و ‎\r تحوّل إلى حرف إرجاع، وهكذا. أما المحارف المجهولة مثل ‎\&‎ فتترك على حالها. وفي حال وجود إشارات خلفية مثل ‎\6‎K، فإنّ السلسلة النصية الفرعية المطابقة بواسطة المجموعة 6 في النمط ستحلّ محل السلسلة الأصلية.

عندما يكون المعامل repl سلسلة نصية، فبالإضافة إلى ما ورد أعلاه بخصوص محارف التهريب والإشارات الخلفية، فإنّ التسلسل ‎\g<name>‎ سيستخدم السلسلة النصية الفرعية المطابقة بواسطة المجموعة التي تحمل الاسم name، وعلى النحو المبيّن في صيغة (‎?P<name>...‎).

يستخدم التسلسل ‎\g<number>‎ عدد المجموعة المقابل، فمثلًا يكون التسلسل ‎\g<2>‎ مكافئًا للتسلسل ‎\2، ولن يتسبب هذا التسلسل بحدوث لبس في حالات مثل ‎\g<2>0، إذ قد يُفسّر التسلسل ‎\20 كإشارة إلى المجموعة 20 وليس كإشارة إلى المجموعة 2 متبوعة بالحرف '0'.

تستبدل الإشارة الخلفية ‎\g<0>‎ في كامل السلسلة الفرعية المطابقة للتعبير النمطي.

إن كان البديل repl دالّة، فإنّها تُستدعى عند كل حالة تطابق غير متداخلة. تأخذ الدالة معاملًا واحدًا وهو كائن match، وتعيد السلسلة النصية البديلة.

string

السلسلة النصية التي ستبحث فيها الدالة عن حالات التطابق.

count

يعيّن المعامل الاختياري count الحد الأقصى لحالات التطابق التي سيجري استبدالها، ويجب أن يكون عددًا صحيحًا غير سالب. إن لم يأخذ هذا المعامل أيّ قيمة أو أخذ القيمة 0 فإنّ الدالة ستستبدل جميع حالات التطابق.

تستبدل حالات التطابق الفارغة فقط عندما لا تكون مجاورة لحالة تطابق سابقة، لذا فإنّ الدالة sub('x*'‎, '-', 'abc')‎ تعيد السلسلة '-a-b-c-'.

flags

الرايات المستخدمة لضبط عملية البحث. يأخذ هذا المعامل القيمة 0 كقيمة افتراضية. راجع قسم المعاملات في توثيق الدالة ()re.compile للمزيد من المعلومات.

القيمة المعادة

تعيد الدالة نتائج عملية الاستبدال كصفوف تأخذ الهيئة (السلسلة الجديدة، عدد الاستبدالات المجراة).

في حال عدم العثور على النمط المطلوب، تعيد الدالة السلسلة النصية دون المساس بها.

ملاحظات

1- أضيف معامل الرايات الاختياري في الإصدار 3.1 من اللغة.

2- في الإصدار 3.5 من اللغة تستبدل المجموعات غير المطابقة بسلاسل نصية فارغة.

أمثلة

يبين المثال التالي النتائج المعادة من استخدام الدالة:

>>> import re
>>> re.subn(r'(blue|white|red)', 'colour', 'blue socks and red shoes')
('colour socks and colour shoes', 2)
>>> re.subn(r'(blue|white|red)', 'colour', 'no colours at all')
('no colours at all', 0)

انظر أيضًا

مصادر