آموزش مقدماتی Regex | عملکردهای پایه‌ای Regex

جستجوی الگوها

جستجوی الگوها، اصلی‌ترین و پایه‌ترین عملکرد Regex است. در این عملیات، شما یک الگو (Pattern) تعریف می‌کنید و سپس در یک رشته متنی به دنبال بخش‌هایی می‌گردید که با آن الگو مطابقت دارند. این فرآیند مانند استفاده از دستور "Find" در یک ویرایشگر متن است، اما با قدرتی بسیار فراتر که به شما امکان جستجوی الگوهای پیچیده و پویا را می‌دهد.

در پایتون، ماژول re این امکان را فراهم می‌کند. تابع اصلی برای انجام جستجو، re.search() است. این تابع الگوی Regex و رشته متنی را دریافت می‌کند و یک شیء "Match" برمی‌گرداند که اطلاعاتی درباره اولین تطابق یافت شده در متن دارد. اگر هیچ تطابقی یافت نشود، مقدار None برگردانده می‌شود.

مثال ۱: جستجوی یک کلمه ساده
فرض کنید می‌خواهیم ببینیم آیا کلمه "سلام" در یک متن وجود دارد یا خیر.

import re

text = "سلام بر دنیای برنامه‌نویسی"
pattern = r"سلام"

result = re.search(pattern, text)

if result:
    print("الگو پیدا شد!")
    print("متن تطبیق‌یافته:", result.group())  # خروجی: سلام
    print("شروع تطابق در اندیس:", result.start())  # خروجی: 0
    print("پایان تطابق در اندیس:", result.end())  # خروجی: 4
else:
    print("الگو پیدا نشد.")

مثال ۲: جستجوی یک الگوی عددی
حالا فرض کنید می‌خواهیم ببینیم آیا در یک آدرس، شماره پلاک وجود دارد یا خیر. شماره پلاک می‌تواند یک یا چند رقم باشد.

import re

address = "خیابان آزادی، پلاک ۱۲۳"
pattern = r"\d+"  # الگو: یک یا چند رقم

result = re.search(pattern, address)

if result:
    print("شماره پلاک یافت شد:", result.group())  # خروجی: ۱۲۳
else:
    print("شماره پلاک یافت نشد.")

مثال ۳: جستجوی با حساسیت به حروف
به طور پیش‌فرض، جستجو به بزرگی و کوچکی حروف حساس است (Case-Sensitive). برای غیرفعال کردن این حساسیت، می‌توان از فلگ re.IGNORECASE (یا به اختصار re.I) استفاده کرد.

import re

text = "Hello World from Python"
pattern = r"python"

# جستجوی حساس به حروف (پیش‌فرض)
result1 = re.search(pattern, text)
print("جستجوی حساس:", result1)  # خروجی: None (چون 'python' با 'Python' متفاوت است)

# جستجوی غیرحساس به حروف
result2 = re.search(pattern, text, re.IGNORECASE)
if result2:
    print("جستجوی غیرحساس:", result2.group())  # خروجی: Python

نکات مهم:

  • تابع re.search() فقط اولین تطابق در رشته را پیدا می‌کند. برای یافتن همه تطابق‌ها باید از re.findall() یا re.finditer() استفاده کرد که در بخش‌های بعدی توضیح داده خواهند شد.
  • الگوی Regex باید به صورت یک "رشته خام" (Raw String) با پیشوند r تعریف شود (مثل r"\d+"). این کار باعث می‌شود بک‌اسلش (\) به عنوان یک کاراکتر ویژه در Regex تفسیر شود و نه به عنوان یک کاراکتر فرار در رشته پایتون.
  • شیء "Match" برگردانده شده، متدهای مفیدی مانند .group() (برای گرفتن متن تطبیق‌یافته)، .start() (شاخص شروع) و .end() (شاخص پایان) را در اختیار ما قرار می‌دهد.

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

پرسش و پاسخ این درس

برای ثبت پرسش ابتدا در سایت وارد شوید.

  • 1
  • 2
  • 3
  • 4