Python RegEx

یک RegEX یا Regular Expression (عبارت های منظم) یک دنباله از کاراکتر ها است که یک الگوی خاص برای جستجو را نشان می‌دهد.

RegEx می‌تواند برای چک کردن این که آیا یک رشته متنی شامل عبارت ها یا فرمت خاصی است یا نه استفاده شود (مثال: چک کردن این که آیا اعداد وارد شده به فرمت یک شماره تلفن معتبر هستند یا نه)

RegEx Module

پایتون یک پکیج از پیش ساخته شده به نام re دارد که امکان کار با عبارت های منظم را فراهم می‌کند.

import re

عبارت های منظم در پایتون

وقتی که ماژول re را import می‌کنید می‌توانید با عبارت های منظم کار کنید.

مثال: جستجوی رشته ای که با “The” شروع شود و با “Spain” تمام شود.

import re

txt = "The rain in Spain"
x = re.search("^The.*Spain$", txt)

توابع عبارت های منظم

ماژول re توابعی را برای ساده کردن جستجو روی رشته ها ارائه می‌دهد.

re function

کاراکتر ها با معنی خاص Metacharacters

دنباله های خاص

با استفاده از  \ می‌توانید یک دنباله با معنی خاص به وجود بیاورید و به دنبال آن از آنچه در لیست قبلی مطرح شد استفاده کنید.

 

 

مجموعه های منظم

مجموعه ای از کاراکتر ها داخل [] معنای خاصی دارند.

 

 

تابع ()findall

تابع ()findall یک لیست از تمام موارد تطبیق یافته را می‌دهد.

 

import re

str = "The rain in Spain"
x = re.findall("ai", str)
print(x)

یک لیست از تمام موارد مطابقت یافته را می‌دهد در صورتی که هیچ موردی وجود نداشت لیست خالی می‌دهد.

import re

str = "The rain in Spain"
x = re.findall("Portugal", str)
print(x)

تابع ()search

تابع ()search برای پیدا کردن یک الگو در رشته استفاده می‌شود و در صورت وجود یک شیئ را باز می‌گرداند و اگر بیش از یک مورد وجود داشت اولین الگوی یافته شده را باز می‌گرداند.

 

مثال: جستجو برای پیدا کردن اولین فضای خالی در رشته

import re

str = "The rain in Spain"
x = re.search("\s", str)

print("The first white-space character is located in position:", x.start())

اگر هیچ موردی پیدا نشود None را بر می‌گرداند

import re

str = "The rain in Spain"
x = re.search("Portugal", str)
print(x)

تابع ()split

تابع ()split برای برش دادن رشته در نقاط مورد تطبیق با الگوی خواسته شده استفاده می‌شود و یک لیست از تمام موارد مورد تطبیق در الگوی خواسته شده را می‌دهد.

 

مثال: جدا کردن رشته در هرکجا که یک فضای خالی بود.

import re

str = "The rain in Spain"
x = re.split("\s", str)
print(x)

همچنین می‌توانید تعداد دفعات اعمال شدن این الگو را با پارامتر maxsplit کنترل کنید.

 

مثال: رشته را فقط در اولین فضای خالی جدا کن

import re

str = "The rain in Spain"
x = re.split("\s", str, 1)
print(x)