آموزش رایگان صفر تا صد پایتون (Python) به زبان ساده
-
معرفی پایتون
-
شروع کار با پایتون
-
دستور زبان پایتون (Python Syntax)
-
توضیح کامنتها در پایتون
-
متغیرها در پایتون
-
نامهای متغیر در پایتون
-
معرفی متغیرها در پایتون و اختصاص چندین مقدار به آنها
-
معرفی متغیرها در خروجی با استفاده از پایتون
-
متغیرهای سراسری (Global Variables) در پایتون
-
انواع دادهها در پایتون
-
انواع اعداد در پایتون
-
تبدیل نوع داده در پایتون (Python Casting)
-
رشتهها در پایتون (Python Strings)
-
برش دادن رشتهها در پایتون (Python - Slicing Strings)
-
تغییر رشتهها در پایتون
-
ترکیب رشتهها در پایتون (String Concatenation)
-
آشنایی با فرمتبندی رشتهها در پایتون
-
کاراکترهای Escape در پایتون
-
مقدمهای بر بولیها (Booleans) در پایتون
-
عملگرها در پایتون
-
لیستها در پایتون
-
دسترسی به آیتمهای لیست در پایتون
-
تغییر مقدار آیتمهای لیست در پایتون
-
افزودن آیتم به لیست در پایتون
-
حذف آیتمها از لیست در پایتون
-
حلقه زدن در لیستها در پایتون
-
معرفی List Comprehension در پایتون
-
مرتبسازی لیستها در پایتون
-
کپی کردن لیستها در پایتون
-
اتصال (Join) لیستها در پایتون
-
آشنایی با Tuple در پایتون
-
دسترسی به آیتمهای یک Tuple در پایتون
-
بروزرسانی Tuple در پایتون
-
باز کردن (Unpacking) Tuple در پایتون
-
حلقهها در Tupleها در پایتون
-
آموزش ترکیب و تکرار تاپلها در پایتون (Join Tuples)
-
مجموعهها (Set) در پایتون
-
دسترسی به آیتمهای مجموعه (Set) در پایتون
-
افزودن آیتم به Set در پایتون
-
حذف آیتمها از Set در Python
-
حلقه در مجموعهها (Set) در پایتون
-
روشهای ترکیب مجموعهها در پایتون (Join Sets)
-
دیکشنریها در پایتون
-
دسترسی به آیتمهای دیکشنری در پایتون
-
تغییر مقادیر دیکشنری در پایتون
-
اضافه کردن آیتمها به دیکشنری در پایتون
-
حذف آیتمها از دیکشنری در پایتون
-
استفاده از حلقهها در دیکشنریها در پایتون
-
کپی کردن دیکشنری در پایتون
-
دیکشنریهای تو در تو در پایتون (Nested Dictionaries)
-
شرطها و دستور If در پایتون
-
حلقههای while در پایتون
-
حلقههای for در پایتون
-
توابع در پایتون
-
معرفی فانکشنهای لامبدا در پایتون
-
آرایهها (Arrays) در پایتون
-
کلاسها و اشیا در پایتون
-
وراثت (Inheritance) در پایتون
-
ایتریتور (یکی یکی پیش رفتن) در پایتون
-
چندریختی (Polymorphism) در پایتون
-
محدوده (Scope) در پایتون
-
ماژول در پایتون چیست؟
-
کار با تاریخ در پایتون
-
ریاضیات در پایتون
-
JSON در پایتون به زبان ساده
-
عبارات منظم (RegEx) در پایتون
-
Python PIP
-
معرفی Try-Except در پایتون
-
ورودی کاربر در پایتون
-
فرمتبندی رشتهها در پایتون
عبارات منظم (RegEx) در پایتون
عبارت منظم یا RegEx یک سری از کاراکترهاست که برای جستجوی الگوها در رشتهها استفاده میشود. با استفاده از RegEx میتوان بررسی کرد که آیا یک رشته شامل الگوی خاصی است یا نه.
استفاده از Module re
در پایتون
در پایتون، برای کار با RegEx باید از ماژول re استفاده کنید. این ماژول ابزارهایی برای جستجو و تطبیق الگوها در رشتهها فراهم میکند.
برای استفاده از آن ابتدا باید ماژول re را وارد کنید:
import re
شروع کار با RegEx در پایتون
پس از وارد کردن ماژول re، میتوانید از آن برای جستجو در رشتهها استفاده کنید. بهعنوان مثال، فرض کنید میخواهیم بررسی کنیم که آیا یک رشته با “The” شروع میشود و با “Spain” تمام میشود یا خیر:
import re
txt = "The rain in Spain"
x = re.search("^The.*Spain$", txt)
در این مثال، از تابع re.search()
استفاده شده که بررسی میکند آیا رشتهی txt با “The” شروع میشود و با “Spain” تمام میشود یا نه.
توابع مهم در ماژول re
ماژول re مجموعهای از توابع مفید برای جستجوی الگوها فراهم میکند:
- findall(): تمام موارد تطبیقشده را در قالب یک لیست برمیگرداند.
- search(): اولین تطبیق را پیدا میکند و یک Match Object برمیگرداند.
- split(): رشته را در محلهای تطبیقشده به بخشهای جداگانه تقسیم میکند.
- sub(): به جای تطبیقها، متن دلخواهی را قرار میدهد.
متاکاراکترها (Metacharacters)
در RegEx، برخی کاراکترها معنی خاصی دارند. به این کاراکترها، متاکاراکتر گفته میشود:
کاراکتر | توضیح | مثال |
---|---|---|
[ ] | مجموعهای از کاراکترها | [a-m] |
\ | مشخصکنندهی یک توالی خاص | \d (اعداد) |
. | هر کاراکتری بهجز خط جدید | he..o |
^ | شروع با ... | ^hello |
$ | پایان با ... | planet$ |
* | صفر یا بیشتر | he.*o |
+ | یک یا بیشتر | he.+o |
? | صفر یا یک بار | he.?o |
{} | دقیقا تعداد مشخصی | he.{2}o |
| | یا | falls|stays |
() | گروهبندی و استخراج | (abc) |
توالیهای خاص (Special Sequences)
توالیهای خاص در RegEx با \
شروع میشوند و معانی خاصی دارند. این توالیها به شما کمک میکنند تا جستجوها را دقیقتر کنید:
کاراکتر | توضیح | مثال |
---|---|---|
\A | تطبیق از ابتدای رشته | \AThe |
\b | تطبیق در ابتدای یا انتهای کلمه | r"\bain" |
\d | تطبیق اعداد | \d |
\D | تطبیق غیر عددی | \D |
\s | تطبیق فضای خالی | \s |
\S | تطبیق غیر فضای خالی | \S |
\w | تطبیق کاراکترهای کلمه | \w |
\W | تطبیق غیر کاراکتر کلمه | \W |
\Z | تطبیق در انتهای رشته | Spain\Z |
استفاده از findall()
تابع findall()
تمام تطبیقهای موجود در یک رشته را بهصورت لیست برمیگرداند. اگر هیچ تطبیقی پیدا نشود، لیست خالی برمیگرداند.
مثال:
import re
txt = "The rain in Spain"
x = re.findall("ai", txt)
print(x)
خروجی:
['ai', 'ai']
مثال بدون تطبیق:
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())
خروجی:
The first white-space character is located in position: 3
استفاده از split()
تابع split()
برای تقسیم یک رشته به قسمتهای مختلف، بر اساس الگوی تطبیقشده استفاده میشود.
مثال:
import re
txt = "The rain in Spain"
x = re.split("\s", txt)
print(x)
خروجی:
['The', 'rain', 'in', 'Spain']
استفاده از sub()
تابع sub()
برای جایگزین کردن تطبیقها با متنی که شما انتخاب کردهاید، استفاده میشود.
مثال:
import re
txt = "The rain in Spain"
x = re.sub("\s", "9", txt)
print(x)
خروجی:
The9rain9in9Spain
مفهوم Match Object
Match Object اطلاعاتی درباره جستجو و نتیجه آن فراهم میکند. این شیء متدهایی دارد که به شما کمک میکند تا جزئیات بیشتری از تطبیق پیدا کنید:
span()
: موقعیت شروع و پایان تطبیق را برمیگرداند.string
: رشتهای که برای جستجو وارد کردهاید.group()
: بخشی از رشته که تطبیق پیدا کرده است.
مثال:
import re
txt = "The rain in Spain"
x = re.search(r"\bS\w+", txt)
print(x.span())
خروجی:
(12, 17)
مثال دیگر:
import re
txt = "The rain in Spain"
x = re.search(r"\bS\w+", txt)
print(x.string)
خروجی:
The rain in Spain
مثال آخر:
import re
txt = "The rain in Spain"
x = re.search(r"\bS\w+", txt)
print(x.group())
خروجی:
Spain
چالشها و تمرینها
- یک رشته بنویسید و با استفاده از RegEx بررسی کنید که آیا رشته شامل عدد است یا خیر.
- رشتهای بنویسید که شامل تعدادی از کاراکترهای خاص باشد (مثلاً فاصله، علامت سوال و غیره) و از متد
sub()
برای جایگزینی آنها استفاده کنید.
جمعبندی
- با استفاده از RegEx میتوانیم جستجوهای پیچیدهتری در رشتهها انجام دهیم.
- ماژول re در پایتون امکانات زیادی برای جستجو، تقسیم، جایگزینی و بررسی تطبیقها دارد.
- متاکاراکترها و توالیهای خاص به شما این امکان را میدهند که جستجوهای دقیقتر و خاصتری انجام دهید.