بازگشت به دوره

آموزش رایگان صفر تا صد پایتون (Python) به زبان ساده

0% تکمیل‌شده
0/0 مرحله
  1. معرفی پایتون
  2. شروع کار با پایتون
  3. دستور زبان پایتون (Python Syntax)
  4. توضیح کامنت‌ها در پایتون
  5. متغیرها در پایتون
  6. نام‌های متغیر در پایتون
  7. معرفی متغیرها در پایتون و اختصاص چندین مقدار به آن‌ها
  8. معرفی متغیرها در خروجی با استفاده از پایتون
  9. متغیرهای سراسری (Global Variables) در پایتون
  10. انواع داده‌ها در پایتون
  11. انواع اعداد در پایتون
  12. تبدیل نوع داده در پایتون (Python Casting)
  13. رشته‌ها در پایتون (Python Strings)
  14. برش دادن رشته‌ها در پایتون (Python - Slicing Strings)
  15. تغییر رشته‌ها در پایتون
  16. ترکیب رشته‌ها در پایتون (String Concatenation)
  17. آشنایی با فرمت‌بندی رشته‌ها در پایتون
  18. کاراکترهای Escape در پایتون
  19. مقدمه‌ای بر بولی‌ها (Booleans) در پایتون
  20. عملگرها در پایتون
  21. لیست‌ها در پایتون
  22. دسترسی به آیتم‌های لیست در پایتون
  23. تغییر مقدار آیتم‌های لیست در پایتون
  24. افزودن آیتم به لیست در پایتون
  25. حذف آیتم‌ها از لیست در پایتون
  26. حلقه زدن در لیست‌ها در پایتون
  27. معرفی List Comprehension در پایتون
  28. مرتب‌سازی لیست‌ها در پایتون
  29. کپی کردن لیست‌ها در پایتون
  30. اتصال (Join) لیست‌ها در پایتون
  31. آشنایی با Tuple در پایتون
  32. دسترسی به آیتم‌های یک Tuple در پایتون
  33. بروزرسانی Tuple در پایتون
  34. باز کردن (Unpacking) Tuple در پایتون
  35. حلقه‌ها در Tupleها در پایتون
  36. آموزش ترکیب و تکرار تاپل‌ها در پایتون (Join Tuples)
  37. مجموعه‌ها (Set) در پایتون
  38. دسترسی به آیتم‌های مجموعه (Set) در پایتون
  39. افزودن آیتم به Set در پایتون
  40. حذف آیتم‌ها از Set در Python
  41. حلقه در مجموعه‌ها (Set) در پایتون
  42. روش‌های ترکیب مجموعه‌ها در پایتون (Join Sets)
  43. دیکشنری‌ها در پایتون
  44. دسترسی به آیتم‌های دیکشنری در پایتون
  45. تغییر مقادیر دیکشنری در پایتون
  46. اضافه کردن آیتم‌ها به دیکشنری در پایتون
  47. حذف آیتم‌ها از دیکشنری در پایتون
  48. استفاده از حلقه‌ها در دیکشنری‌ها در پایتون
  49. کپی کردن دیکشنری در پایتون
  50. دیکشنری‌های تو در تو در پایتون (Nested Dictionaries)
  51. شرط‌ها و دستور If در پایتون
  52. حلقه‌های while در پایتون
  53. حلقه‌های for در پایتون
  54. توابع در پایتون
  55. معرفی فانکشن‌های لامبدا در پایتون
  56. آرایه‌ها (Arrays) در پایتون
  57. کلاس‌ها و اشیا در پایتون
  58. وراثت (Inheritance) در پایتون
  59. ایتریتور (یکی یکی پیش رفتن) در پایتون
  60. چندریختی (Polymorphism) در پایتون
  61. محدوده (Scope) در پایتون
  62. ماژول در پایتون چیست؟
  63. کار با تاریخ در پایتون
  64. ریاضیات در پایتون
  65. JSON در پایتون به زبان ساده
  66. عبارات منظم (RegEx) در پایتون
  67. Python PIP
  68. معرفی Try-Except در پایتون
  69. ورودی کاربر در پایتون
  70. فرمت‌بندی رشته‌ها در پایتون

عبارت منظم یا 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

چالش‌ها و تمرین‌ها

  1. یک رشته بنویسید و با استفاده از RegEx بررسی کنید که آیا رشته شامل عدد است یا خیر.
  2. رشته‌ای بنویسید که شامل تعدادی از کاراکترهای خاص باشد (مثلاً فاصله، علامت‌ سوال و غیره) و از متد sub() برای جایگزینی آن‌ها استفاده کنید.

جمع‌بندی

  • با استفاده از RegEx می‌توانیم جستجوهای پیچیده‌تری در رشته‌ها انجام دهیم.
  • ماژول re در پایتون امکانات زیادی برای جستجو، تقسیم، جایگزینی و بررسی تطبیق‌ها دارد.
  • متاکاراکترها و توالی‌های خاص به شما این امکان را می‌دهند که جستجوهای دقیق‌تر و خاص‌تری انجام دهید.