التابع regex.subn()
في بايثون
يؤدي هذا التابع نفس عمل التابع regex.sub()
ولكنّه يعيد الناتج على هيئة صفّ (السلسلة الجديدة، عدد الاستبدالات المجراة).
البنية العامة
regex.subn(repl, string, count=0)
المعاملات
repl
يمكن للبديل repl
أن يكون سلسلة نصية أو دالة، وإن كان سلسلة نصية، فإنّ التابع يعالج جميع المحارف المهرّبة فيها. بمعنى أنّ \n
تحوّل إلى محرف سطر جديد مفرد، و \r
تحوّل إلى حرف إرجاع، وهكذا. أما المحارف المجهولة مثل \&
فتترك على حالها. وفي حال وجود إشارات خلفية مثل \6K
، فإنّ السلسلة النصية الفرعية المطابقة بواسطة المجموعة 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
فإنّ التابع سيستبدل جميع حالات التطابق.
القيمة المعادة
يعيد التابع نتائج عملية الاستبدال كصفوف تأخذ الهيئة (السلسلة الجديدة، عدد الاستبدالات المجراة).
في حال عدم العثور على النمط المطلوب، يعيد التابع صفًّا القيمة الأولى فيه هي السلسلة النصية الأصلية، والقيمة الثانية هي 0
.
أمثلة
يبين المثال التالي النتائج المعادة من استخدام التابع:
>>> import re
>>> p = re.compile(r'(blue|white|red)')
>>> p.subn('colour', 'blue socks and red shoes')
('colour socks and colour shoes', 2)
>>> p.subn('colour', 'no colours at all')
('no colours at all', 0)
انظر أيضًا
- التابع
regex.sub()
في بايثون. - الدالة
reg.subn()
في بايثون.