RegEx في Python

RegEx أو تعبير النمط هو سلسلة من الأحرف التي تشكل نموذج البحث.

RegEx يمكن استخدامها للتحقق من أن النص يحتوي على نموذج البحث المحدد.

نموذج RegEx

Python يقدم اسمًا re المدمج، يمكن استخدامه لمعالجة تعبيرات النص العادية。

استيراد re المodule

import re

تعبيرات النص العادية في Python

استيراد re بعد تثبيت المodule، يمكن البدء في استخدام تعبيرات النص العادية

Instance

البحث في النص لمعرفة ما إذا كان يبدأ بالنص "China" ويختم بالنص "country"

import re
txt = "China is a great country"
x = re.search("^China.*country$", txt)

Run Instance

وظائف RegEx

re يقدم المodule مجموعة من الوظائف، مما يسمح لنا بالبحث في النصوص لتحقيق المطابقات:

الوظيفة الوصف
findall يعود بمجموعة من جميع المطابقات
search إذا كان هناك مطابق في أي مكان في النص، فإنه يعود بموضوع Match
split يعود بمجموعة من النصوص التي يتم تقسيمها في كل مطابقة
sub استبدال مجموعة من المطابقات بنص

الرموز

الرموز هي الأحرف التي تحتوي على معنى خاص:

حرف الوصف مثال TIY
[] مجموعة من الأحرف "[a-m]" تجربة
\ توضيح السلسلة الخاصة (يمكن استخدامها أيضًا للهروب من الأحرف الخاصة) "\d" تجربة
. أي حرف (استثنًا الرمز النصي للتنقل) "he..o" تجربة
^ يبدأ به "^hello" تجربة
$ ينتهي به "world$" تجربة
* لا مرة أو أكثر "aix*" تجربة
+ مرة واحدة أو أكثر "aix+" تجربة
{} مرة أو أكثر من المحددة بدقة "al{2}" تجربة
| أحدهما "falls|stays" تجربة
() التقاطع والتنسيق

السلسلة الخاصة

السلسلة الخاصة تعني \ يتبعه أحد الأحرف المذكورة في الجدول التالي، يمتلك معنى خاص:

حرف الوصف مثال TIY
\A إذا كان الحرف المحدد موجودًا في بداية النص، فإنه يعود بمطابقة "\AThe" تجربة
\b يعود بمطابقة الحرف المحدد موجودًا في بداية الكلمة أو نهايتها r"\bain"
r"rain\b"
تجربة
تجربة
\B يعود بمطابقة الحرف المحدد موجودًا، لكنه ليس في بداية الكلمة (أو نهايتها) r"\Bain"
r"rain\B"
تجربة
تجربة
\d يعود بمطابقة النص يحتوي على أرقام (الأرقام 0-9) "\d" تجربة
\D يعود بمطابقة النص لا يحتوي على أرقام "\D" تجربة
\s يعود بمطابقة النص يحتوي على حروف فراغ "\s" تجربة
\S يعود بمطابقة النص لا يحتوي على حروف فراغ "\S" تجربة
\w يعود بمطابقة يحتوي النص على أي حرف كلمة
(من a إلى Z من الأحرف، من 0 إلى 9 من الأرقام وخط العلامة التشغيل _)
"\w" تجربة
\W يعود بمطابقة يحتوي النص على أي حرف غير كلمة "\W" تجربة
\Z إذا كان الحرف المحدد موجودًا في نهاية النص، فإنه يعود بمطابقة "Spain\Z" تجربة

الجمع (Set)

المجموعة (Set) هي زوج من الأسهم المزدوجة [] مجموعة من الأحرف الموجودة في:

المجموعة الوصف تجربة
[arn] العودة إلى تطابق يحتوي على أي من الأحرف المحددة (a، r أو n) تجربة
[a-n] العودة إلى تطابق أي حرف صغير بين a و n تجربة
[^arn] العودة إلى تطابق يحتوي على أي حرف غير a، r و n تجربة
[0123] العودة إلى تطابق يحتوي على أي من الأرقام المحددة (0، 1، 2 أو 3) تجربة
[0-9] العودة إلى تطابق أي رقم بين 0 و 9 تجربة
[0-5][0-9] العودة إلى تطابق أي رقم بين 0 و 9 تجربة
[a-zA-Z] العودة إلى تطابق أي حرف بين a و z، سواء كان صغيرًا أو كبيرًا تجربة
[+] في المجموعة، +، *، .، |، ()، $، {} ليس لها معنى خاص، لذا [+] يعني: العودة إلى تطابق أي حرف + في النص تجربة

وظيفة findall()

findall() الوظيفة تعود قائمة تحتوي على جميع التطابقات.

Instance

اطبع قائمة التطابق كلها:

import re
str = "China is a great country"
x = re.findall("a", str)
print(x)

Run Instance

تتضمن هذه القائمة التطابق الذي تم العثور عليه بالترتيب.

إذا لم يتم العثور على تطابق، يتم العودة إلى قائمة فارغة:

Instance

إذا لم يتم العثور على تطابق، يتم العودة إلى قائمة فارغة:

import re
str = "China is a great country"
x = re.findall("USA", str)
print(x)

Run Instance

وظيفة search()

search() الوظيفة تبحث في التطابق في النص، إذا كان هناك تطابق يتم العودة إلى كائن Match.

إذا كان هناك تطابق متعدد، يتم العودة إلى التطابق الأول فقط:

Instance

البحث في النص للحرف الفراغي الأول:

import re
str = "China is a great country"
x = re.search("\s", str)
print("الوحدة الفرعية الأولى للحرف الفراغي هي الموضع:", x.start())

Run Instance

إذا لم يتم العثور على تطابق، يتم العودة إلى القيمة: None:

Instance

البحث دون العودة إلى التطابق:

import re
str = "China is a great country"
x = re.search("USA", str)
print(x)

Run Instance

وظيفة split()

split() الوظيفة تعود قائمة تحتوي على النصوص التي تم تقسيمها عند كل تطابق:

Instance

قسم عند كل حرف فراغي:

import re
str = "China is a great country"
x = re.split("\s", str)
print(x)

Run Instance

You can specify maxsplit المعدل لتحكم في عدد الظهور:

Instance

قسم فقط عند الظهور الأولي للنص:

import re
str = "China is a great country"
x = re.split("\s", str, 1)
print(x)

Run Instance

وظيفة sub()

sub() الوظيفة تتبادل التغيير مع النص الذي اخترته:

Instance

باستخدام الرقم 9 لتبديل كل حرف فراغي:

import re
str = "China is a great country"
x = re.sub("\s", "9", str)
print(x)

Run Instance

You can specify count Parameter to control the number of replacements:

Instance

Replace the first two occurrences:

import re
str = "China is a great country"
x = re.sub("\s", "9", str, 2)
print(x)

Run Instance

Match Object

The Match object is an object that contains information about the search and results.

Note:If there is no match, the return value None،而不是 Match Object.

Instance

The search will return a Match object:

import re
str = "China is a great country"
x = re.search("a", str)
print(x) # Will print an object

Run Instance

The Match object provides attributes and methods for retrieving information about the search and results:

  • span() The returned tuple contains the start and end positions of the match
  • .string Return the string passed to the function
  • group() Return the matched string part

Instance

Print the position of the first match (start and end position).

Regular expression to find any word starting with uppercase "C":

import re
str = "China is a great country"
x = re.search(r"\bC\w+", str)
print(x.span())

Run Instance

Instance

Print the string passed to the function:

import re
str = "China is a great country"
x = re.search(r"\bC\w+", str)
print(x.string)

Run Instance

Instance

Print the matched string part.

Regular expression to find any word starting with uppercase "C":

import re
str = "China is a great country"
x = re.search(r"\bC\w+", str)
print(x.group())

Run Instance

Note:If there is no match, the return value None،而不是 Match Object.