ماژول RegEx
پایتون یک بسته داخلی به نام re
دارد که میتوان از آن برای کار با عبارات منظم (Regular Expression) استفاده کرد.
وارد کردن ماژول re
:
import re
عبارات منظم (RegEx) در پایتون
re
را وارد کردید، می توانید شروع به استفاده از عبارات منظم کنید: مثال
import re
txt = "The rain in Spain"
x = re.search("^The.*Spain$", txt)
تابع RegEx
ماژول re
مجموعه ای از توابع را ارائه می دهد که به ما امکان می دهد یک رشته را برای یک انطباق جستجو کنیم:
متاکاراکتر | Metacharacters
متاکاراکترها کاراکترهایی با معنای خاص هستند:
کاراکتر | توضیحات | مثال | امتحان کنید |
---|---|---|---|
[] | مجموعه ای از کاراکترها | “[a-m]” | امتحان کنید |
\ | سیگنال یک دنباله خاص (همچنین می تواند برای فرار از کاراکترهای خاص استفاده شود)
| “\d” | امتحان کنید |
. | هر کاراکتری (به جز کاراکتر ایجاد خط جدید) | “he..o” | امتحان کنید |
^ | شروع می شود با
| “^hello” | امتحان کنید |
$ | به پایان می رسد با
| “planet$” | امتحان کنید |
* | رخداد صفر یا بیشتر | “he.*o” | امتحان کنید |
+ | یک یا چند مورد | “he.+o” | امتحان کنید |
? | صفر یا یک رخداد | “he.?o” | امتحان کنید |
{} | تعداد رخداد دقیقا به تعداد مشخص شده | “he.{2}o” | امتحان کنید |
| | یکی یا هردو رخداد | “falls|stays” | امتحان کنید |
() | گرفتن و گروه |
سکانسهای ویژه (Special Sequences )
\
به دنبال یکی از کاراکترهای لیست زیر است و معنای خاصی دارد: کاراکتر | توضیحات | مثال | امتحان کنید |
---|---|---|---|
\A | اگر کاراکترهای مشخص شده در ابتدای رشته باشند، یک تطابق را برمیگرداند | “\AThe” | امتحان کنید |
\b | تطابقی را برمیگرداند که در آن نویسههای مشخص شده در ابتدا یا انتهای یک کلمه هستند | r”\bain” | امتحان کنید |
( کاراکتر "r" در ابتدا اطمینان حاصل می کند که رشته به عنوان یک “رشته خام” در نظر گرفته می شود) | r”ain\b” | امتحان کنید | |
\B | تطابقی را برمیگرداند که در آن نویسههای مشخص شده وجود دارند، اما نه در ابتدا (یا در انتهای) یک کلمه | r”\Bain” | امتحان کنید |
(کاراکتر "r" در ابتدا اطمینان حاصل می کند که رشته به عنوان یک “رشته خام” در نظر گرفته می شود) | r”ain\B” | امتحان کنید | |
\d | تطابقی را برمیگرداند که در آن رشته دارای اعداد باشد (اعداد 0-9) | “\d” | امتحان کنید |
\D | تطابقی را برمیگرداند که در آن رشته شامل اعداد نباشد | “\D” | امتحان کنید |
\s | تطابقی را برمیگرداند که در آن رشته دارای کاراکتر فاصله است | “\s” | امتحان کنید |
\S | تطابقی را برمیگرداند که در آن رشته دارای کاراکتر فاصله نباشد | “\S” | امتحان کنید |
\w | تطابقی را برمیگرداند که در آن رشته شامل هر کاراکتر کلمهای باشد (کاراکترهای a تا Z، ارقام 0-9 و کاراکتر آندرلاین _) | “\w” | امتحان کنید |
\W | تطابقی را برمیگرداند که در آن رشته حاوی هیچ کاراکتر کلمهای نباشد | “\W” | امتحان کنید |
\Z | اگر کاراکترهای مشخص شده در انتهای رشته قرار داشته باشند، یک تطابق را برمیگرداند | “Spain\Z” | امتحان کنید |
مجموعه ها (Sets)
مجموعه، مجموعه ای از کاراکترها در داخل یک جفت کروشه [] است که معنای خاصی دارد:
مجموعه | توضیحات | امتحان کنید |
---|---|---|
[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] | برای هر عدد دو رقمی از 00 تا 59 مطابقت را برمیگرداند | امتحان کنید |
[a-zA-Z] | یک مطابقت برای هر کاراکتری بر اساس حروف الفبا بین a و z کوچک یا بزرگ نشان می دهد | امتحان کنید |
[+] | در مجموعهها، +، *، .، |، ()، $،{} معنای خاصی ندارد، بنابراین [+] به معنای: برگرداندن یک مطابقت برای هر کاراکتر + در رشته است. | امتحان کنید |
تابع findall()
finall()
لیستی را برمیگرداند که شامل همه موارد منطبق است. مثال
import re
txt = "The rain in Spain"
x = re.findall("ai", txt)
print(x)
فهرست شامل موارد منطبق به ترتیب یافتن آنهاست.
اگر هیچ منطبقی پیدا نشد، یک لیست خالی برگردانده می شود:
مثال
import re
txt = "The rain in Spain"
x = re.findall("Portugal", txt)
print(x)
تابع search()
تابع search()
رشته را برای یک تطابق جستجو میکند و در صورت وجود تطابق، Match Object را برمیگرداند.
اگر بیش از یک تطابق وجود داشته باشد، فقط اولین مورد منطبق برگشت داده می شود:
مثال
import re
txt = "The rain in Spain"
x = re.search("\s", txt)
print("The first white-space character is located in position:", x.start())
None
برگردانده می شود: مثال
import re
txt = "The rain in Spain"
x = re.search("Portugal", txt)
print(x)
تابع split()
تابع split()
در هر رشته از محل انطباق های موجود یک برش یا شکاف ایجاد میکند و یک لیست از بخش های ایجاد شده برمیگرداند:
مثال
import re
txt = "The rain in Spain"
x = re.split("\s", txt)
print(x)
maxsplit
می توانید تعداد رخدادها را کنترل کنید: مثال
import re
txt = "The rain in Spain"
x = re.split("\s", txt, 1)
print(x)
تابع sub()
تابع sub()
رخداد مورد نظر را با متن انتخابی شما جایگزین می کند:
مثال
import re
txt = "The rain in Spain"
x = re.sub("\s", "9", txt)
print(x)
با تعیین پارامترcount
(تعداد) می توانید تعداد جایگیزینی ها را کنترل کنید:
مثال
import re
txt = "The rain in Spain"
x = re.sub("\s", "9", txt, 2)
print(x)
شیء مطابق (Match Object)
Match Object یک شی است که حاوی اطلاعاتی در مورد جستجو و نتیجه است.
توجه: اگر مطابقت وجود نداشته باشد، به جای Match Object، مقدار None برگردانده می شود.
مثال
import re
txt = "The rain in Spain"
x = re.search("ai", txt)
print(x) #این یک شیء را برمیگرداند
.span()
یک تاپل حاوی موقعیت های شروع و پایان مسابقه را برمی گرداند.string.
رشته ارسال شده به تابع را برمی گرداند..group()
بخشی از رشته را که در آن تطابق وجود دارد برمی گرداند.
مثال
import re
txt = "The rain in Spain"
x = re.search(r"\bS\w+", txt)
print(x.span())
مثال
import re
txt = "The rain in Spain"
x = re.search(r"\bS\w+", txt)
print(x.string)
مثال
import re
txt = "The rain in Spain"
x = re.search(r"\bS\w+", txt)
print(x.group())
توجه: اگر مطابقت وجود نداشته باشد، به جای Match Object، مقدار None برگردانده می شود.