آموزش مقدماتی 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()(شاخص پایان) را در اختیار ما قرار میدهد.
با استفاده از این تابع ساده، شما میتوانید پایهایترین نیاز خود برای یافتن اطلاعات در متن را برطرف کنید. قدرت واقعی زمانی آشکار میشود که الگوهای جستجوی خود را با استفاده از کاراکترهای ویژه، کلاسهای کاراکتری و کمیتنماها پیچیدهتر کنید.
برای ثبت پرسش ابتدا در سایت وارد شوید.