الفرق بين المراجعتين لصفحة: «Python/regex/split»

من موسوعة حسوب
< Python‏ | regex
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE:التابع <code>regex.split()‎</code> في بايثون‎}}</noinclude> يقسم التابع السلسلة النصية عند كل م...'
 
لا ملخص تعديل
 
(3 مراجعات متوسطة بواسطة مستخدم واحد آخر غير معروضة)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE:التابع <code>regex.split()‎</code> في بايثون‎}}</noinclude>
<noinclude>{{DISPLAYTITLE:التابع <code>regex.split()‎</code> في بايثون‎}}</noinclude>
يقسم التابع السلسلة النصية عند كل مكان تحدث فيه عملية مطابقة للنمط المصرّف.  هذا التابع مطابق تمامًا للدالة [[Python/re/split|re.split()‎]].
يقسم التابع السلسلة النصية عند كل مكان تحدث فيه عملية مطابقة للنمط المصرّف.  هذا التابع مطابق تمامًا للدالة [[Python/re/split|<code>re.split()‎</code>]].


== البنية العامة ==
== البنية العامة ==
سطر 15: سطر 15:


العدد الأقصى من التقسيمات التي سيجريها التابع على السلسلة النصية. في حال كان العدد الأقصى من التقسيمات أقل من عدد حالات المطابقة فإنّ التابع يعيد ما يبقى من السلسلة النصية ليكون العنصر الأخير في القائمة المعادة. يأخذ هذا المعامل القيمة الافتراضية <code>0</code>.
العدد الأقصى من التقسيمات التي سيجريها التابع على السلسلة النصية. في حال كان العدد الأقصى من التقسيمات أقل من عدد حالات المطابقة فإنّ التابع يعيد ما يبقى من السلسلة النصية ليكون العنصر الأخير في القائمة المعادة. يأخذ هذا المعامل القيمة الافتراضية <code>0</code>.


== القيمة المعادة ==
== القيمة المعادة ==
سطر 32: سطر 31:
لا تقسّم الأنماط التي تطابق سلاسل نصية فارغة السلاسل النصية في الوقت الحاضر، وهذا لا يتّفق مع السلوك المتوقّع من التابع، لذا فإنّ اللغة تطلق الخطأ <code>ValueError</code> في الإصدار 3.5 وما بعده:
لا تقسّم الأنماط التي تطابق سلاسل نصية فارغة السلاسل النصية في الوقت الحاضر، وهذا لا يتّفق مع السلوك المتوقّع من التابع، لذا فإنّ اللغة تطلق الخطأ <code>ValueError</code> في الإصدار 3.5 وما بعده:


syntaxhighlight lang="python3">
<syntaxhighlight lang="python3">
>>> re.split("^$", "foo\n\nbar\n", flags=re.M)
>>> re.split("^$", "foo\n\nbar\n", flags=re.M)
Traceback (most recent call last):
Traceback (most recent call last):
سطر 39: سطر 38:
ValueError: split() requires a non-empty pattern match.
ValueError: split() requires a non-empty pattern match.
</syntaxhighlight>
</syntaxhighlight>
'''ملاحظة:''' أضيف معامل الرايات الاختياري في الإصدار 3.1 من اللغة.


'''ملاحظة:''' في الإصدار 3.5 من اللغة يؤدي إجراء عملية التقسيم التي قد تطابق سلسلة نصية فارغة إلى إطلاق تحذير. أما الأنماط التي لا تطابق سوى السلاسل النصية فأصبحت مرفوضة.
'''ملاحظة:''' في الإصدار 3.5 من اللغة يؤدي إجراء عملية التقسيم التي قد تطابق سلسلة نصية فارغة إلى إطلاق تحذير. أما الأنماط التي لا تطابق سوى السلاسل النصية فأصبحت مرفوضة.
سطر 66: سطر 63:
['This', '... ', 'is', ' ', 'a', ' ', 'test', '.', '']
['This', '... ', 'is', ' ', 'a', ' ', 'test', '.', '']
</syntaxhighlight>
</syntaxhighlight>
== انظر أيضًا ==
* الدالة <code>[[Python/re/split|re.split()‎]]</code>: تقسم الدالة السلسلة النصية عند كل مكان تحدث فيه عملية مطابقة للنمط المعطى.


== مصادر ==
== مصادر ==
* [https://docs.python.org/3/library/re.html#re.regex.split قسم Module Contents في صفحة Regular expressions objects في توثيق بايثون الرسمي.]
* [https://docs.python.org/3/library/re.html#re.regex.split قسم Module Contents في صفحة Regular expressions objects في توثيق بايثون الرسمي.]
* [[صفحة Regular Expression HOWTO في توثيق بايثون الرسمي.]]
* [https://docs.python.org/3/library/re.html#re.regex.split صفحة Regular Expression HOWTO في توثيق بايثون الرسمي.]
[[تصنيف:Python]]
[[تصنيف:Python]]
[[تصنيف:Python Method]]
[[تصنيف:Python Regular Expressions]]
[[تصنيف:Python Regular Expressions]]
[[تصنيف:Python regex]]

المراجعة الحالية بتاريخ 14:24، 18 يونيو 2018

يقسم التابع السلسلة النصية عند كل مكان تحدث فيه عملية مطابقة للنمط المصرّف. هذا التابع مطابق تمامًا للدالة re.split()‎.

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

regex.split(string, maxsplit=0)

المعاملات

string

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

maxsplit

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

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

يقسم التابع السلسلة النصية عند كل مكان تحدث فيه عملية مطابقة للنمط المصرّف. إن استُخدمت أقواس التقاط القيمة ضمن النمط، فإنّ النصّ التابع لجميع المجموعات ضمن النمط سيُعاد كجزء من القائمة الناتجة.

ملاحظات

لا يقسم التابع split()‎ في الوقت الحاضر السلسلة النصية عند ظهور حالات تطابق فارغة، فعلى سبيل المثال:

>>> re.split('x*', 'axbc')
['a', 'bc']

صحيح أنّ نتيجة مطابقة التعبير ‎'x*'‎ هي العثور على 0 حالة تطابق قبل الحرف 'a' وبين الحرفين 'b' و 'c' وبعد الحرف 'c' إلا أنّ اللغة تتجاهل حالات التطابق هذه في الوقت الحاضر. يفترض بهذا التابع أن يقسم السلسلة النصية عند حالات التطابق الفارغة أيضًا ويعيد القائمة ['', 'a', 'b', 'c', '']، وهذا ما ستتضمّنه الإصدارات المستقبلية من اللغة، ولمّا كان هذا التغيير غير متوافق مع الإصدارات السابقة، فإنّ اللغة تطلق التحذير FutureWarning في الوقت الحاضر.

لا تقسّم الأنماط التي تطابق سلاسل نصية فارغة السلاسل النصية في الوقت الحاضر، وهذا لا يتّفق مع السلوك المتوقّع من التابع، لذا فإنّ اللغة تطلق الخطأ ValueError في الإصدار 3.5 وما بعده:

>>> re.split("^$", "foo\n\nbar\n", flags=re.M)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  ...
ValueError: split() requires a non-empty pattern match.

ملاحظة: في الإصدار 3.5 من اللغة يؤدي إجراء عملية التقسيم التي قد تطابق سلسلة نصية فارغة إلى إطلاق تحذير. أما الأنماط التي لا تطابق سوى السلاسل النصية فأصبحت مرفوضة.

أمثلة

يبين المثال التالي طريقة استخدام التابع:

>>> import re
>>> p = re.compile(r'\W+')
>>> p.split('This is a test, short and sweet, of split().')
['This', 'is', 'a', 'test', 'short', 'and', 'sweet', 'of', 'split', '']
>>> p.split('This is a test, short and sweet, of split().', 3)
['This', 'is', 'a', 'test, short and sweet, of split().']

يمكن إضافة الفصل إلى القائمة المعادة من هذا التابع وذلك باستخدام أقواس الالتقاط capturing parentheses، لاحظ الفرق بين الاستدعائين التاليين:

>>> p = re.compile(r'\W+')
>>> p2 = re.compile(r'(\W+)')
>>> p.split('This... is a test.')
['This', 'is', 'a', 'test', '']
>>> p2.split('This... is a test.')
['This', '... ', 'is', ' ', 'a', ' ', 'test', '.', '']

انظر أيضًا

  • الدالة re.split()‎: تقسم الدالة السلسلة النصية عند كل مكان تحدث فيه عملية مطابقة للنمط المعطى.

مصادر