عبارات باقاعده/رگکس (Python RegEx)
استخراج اطلاعات با RegEx (قدرت مطلق جستجو) 🔍🕵️
RegEx مخفف Regular Expression است. تصور کنید در یک فایل 1 میلیون خطی، به دنبال تمام شماره موبایلهایی میگردید که با '0912' شروع میشوند. با جستجوی معمولی (Ctrl+F) ساعتها طول میکشد، اما با RegEx در کمتر از یک ثانیه انجام میشود.
۱. متدهای فوقالعاده ماژول re
- re.findall(): تمام موارد منطبق را پیدا کرده و به صورت یک لیست برمیگرداند.
- re.search(): فقط به دنبال اولین مورد میگردد و جزئیات مکانی آن را میدهد.
- re.split(): متن را بر اساس یک الگوی خاص تکهتکه میکند.
- re.sub(): جایگزینی هوشمند (مثلاً جایگزین کردن تمام فحشها با ستاره).
import re
txt = "The rain in Spain"
x = re.search("^The.*Spain$", txt)
if x:
print("YES! We have a match!")
۲. کاراکترهای متا (Meta Characters)
قدرت RegEx در نشانههاست:
.: هر کاراکتری (بجز خط جدید).^: شروع با یک کلمه خاص.$: پایان با یک کلمه خاص.*: صفر یا چند تکرار.\d: فقط اعداد.\w: حروف الفبا و اعداد.
شیء Match: تابع
re.search() یک شیء برمیگرداند که شامل اطلاعاتی مثل مکان شروع (start) و پایان (end) و خودِ متن پیدا شده (group) است.
خوانایی کد: عبارات RegEx ممکن است خیلی پیچیده و شبیه به "زبان فضاییها" به نظر برسند! همیشه برای آنها کامنت بگذارید تا دیگران بفهمند برنامه چه چیزی را جستجو میکند.
تمرین آنلاین: وبسایت
regex101.com بهترین مکان برای تست کردن الگوهای شما قبل از نوشتن آنها در پایتون است.
تمرینهای عملی
برای تثبیت یادگیری این درس تمرینهای زیر را حل کنید
جستجوی کلمه در RegEx
Medium
سوال تمرین
با استفاده از تابع findall در ماژول re، تمام تکرارهای کلمه 'ai' را در متغیر txt پیدا کنید.
پاسخ تمرین
PYTHON
import re
txt = 'The rain in Spain'
x = re.findall('ai', txt)
print(x)
آماده رفتن به درس بعدی هستید؟
این درس را به پایان رساندید و میتوانید به درس بعدی بروید.