عبارات منظم re

اصلاح شده

2026-07-25

عبارت منظم (Regex) چیست؟

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

توابع اصلی ماژول re

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

نمادهای پرکاربرد در regex

نماد معنی
\d یک رقم (0-9)
\w یک کاراکتر حرفی/عددی یا _
\s فضای خالی (space, tab, …)
. هر کاراکتری (به‌جز خط جدید)
* صفر یا بیشتر تکرار
+ یک یا بیشتر تکرار
? صفر یا یک بار (اختیاری)
^ شروع رشته
$ پایان رشته
[] یکی از کاراکترهای داخل براکت
{n,m} تکرار بین n تا m بار

findall — استخراج همه موارد

text = "Numbers: 12, 45, 78"
numbers = re.findall(r'\d+', text)
print(numbers)   # ['12', '45', '78']

sub — جایگزینی

text = "Contact: 0912-1234567"
masked = re.sub(r'\d', '*', text)
print(masked)   # Contact: ****-*******

استخراج با گروه (())

text = "Name: Ali, Age: 25"
match = re.search(r'Name: (\w+), Age: (\d+)', text)
print(match.group(1))   # Ali
print(match.group(2))   # 25
  • هر پرانتز یک گروه جدا می‌سازه که به‌صورت مستقل قابل دسترسیه

کامپایل کردن الگو (برای استفاده مکرر)

pattern = re.compile(r'\d+')
print(pattern.findall("a1 b22 c333"))
  • وقتی یک الگو رو چندبار قراره استفاده کنیم، کامپایل کردنش بهینه‌تره

نکته

  • برای موارد ساده (مثل startswith()، in) نیازی به regex نیست — regex برای الگوهای پیچیده‌تر (مثل ایمیل، شماره تلفن، فرمت تاریخ) به‌کار می‌ره