آموزش عبارات منظم در پایتون، عبارات منظم (Regular Expressions) یک ابزار قدرتمند برای جستجو و پردازش متن است. این ابزار به شما امکان میدهد الگوهایی را برای متن تعریف کرده و عملیاتهایی مانند تطبیق، استخراج، و جایگزینی را انجام دهید. در پایتون، ماژول re برای کار با عبارات منظم استفاده میشود.
1. آشنایی با عبارات منظم (Regular Expressions)
وارد کردن ماژول re
برای استفاده از عبارات منظم، ابتدا باید ماژول re را وارد کنید:
import re
تطبیق الگو با استفاده از match
تابع match بررسی میکند که آیا یک رشته با الگوی مشخصی در ابتدای متن مطابقت دارد یا خیر.
مثال:
import re
pattern = r"hello"
text = "hello world"
match = re.match(pattern, text)
if match:
print("Pattern found at the beginning of the text!")
else:
print("Pattern not found.")
خروجی:
Pattern found at the beginning of the text!
جستجو در متن با استفاده از search
تابع search به دنبال اولین تطبیق الگو در کل متن میگردد.
مثال:
pattern = r"world"
text = "hello world"
result = re.search(pattern, text)
if result:
print(f"Pattern found at index {result.start()}!")
else:
print("Pattern not found.")
خروجی:
Pattern found at index 6!
یافتن تمام تطبیقها با findall
تابع findall تمام تطبیقهای الگو را در متن برمیگرداند.
مثال:
pattern = r"\d+" # الگوی اعداد
text = "There are 12 apples, 15 oranges, and 7 bananas."
result = re.findall(pattern, text)
print(result)
خروجی:
['12', '15', '7']
جایگزینی با استفاده از sub
تابع sub برای جایگزینی متن استفاده میشود.
مثال:
pattern = r"\d+"
text = "There are 12 apples and 15 oranges."
new_text = re.sub(pattern, "many", text)
print(new_text)
خروجی:
There are many apples and many oranges.
تقسیم متن با استفاده از split
تابع split متن را براساس الگوی مشخص تقسیم میکند.
مثال:
pattern = r",\s*" # الگوی کاما و فضای خالی
text = "apple, banana, cherry, date"
result = re.split(pattern, text)
print(result)
خروجی:
['apple', 'banana', 'cherry', 'date']
کار با گروهها
گروهبندی به شما امکان میدهد بخشهایی از الگو را جداگانه استخراج کنید.
مثال:
pattern = r"(\d+)-(\d+)-(\d+)"
text = "2024-12-28"
match = re.search(pattern, text)
if match:
print(f"Year: {match.group(1)}")
print(f"Month: {match.group(2)}")
print(f"Day: {match.group(3)}")
خروجی:
Year: 2024
Month: 12
Day: 28
پرچمهای عبارات منظم
پرچمها گزینههای اضافی برای کنترل رفتار عبارات منظم هستند.
| پرچم | توضیح |
|---|---|
re.IGNORECASE |
نادیده گرفتن تفاوت حروف کوچک و بزرگ |
re.MULTILINE |
تطبیق با خطوط متعدد |
re.DOTALL |
شامل کردن خطوط جدید در تطبیق با . |
مثال با IGNORECASE:
pattern = r"hello"
text = "Hello world"
result = re.search(pattern, text, re.IGNORECASE)
if result:
print("Pattern found!")
خروجی:
Pattern found!
به طور کلی می توان گفت:
عبارات منظم ابزاری قدرتمند برای پردازش متن در پایتون هستند. با استفاده از ماژول re، میتوانید عملیاتهایی مانند جستجو، تطبیق و جایگزینی را به صورت کارآمد انجام دهید. تسلط بر این ابزار میتواند در پروژههای مرتبط با پردازش متن و داده بسیار مفید باشد.
2. استفاده از ماژول re
ماژول re در پایتون برای کار با عبارات منظم (Regular Expressions) طراحی شده است. این ماژول امکاناتی مانند جستجو، تطبیق، استخراج و جایگزینی متن را فراهم میکند. در اینجا، ابزارها و توابع کلیدی این ماژول را بررسی میکنیم.
وارد کردن ماژول re
برای شروع استفاده از re، کافی است آن را به برنامه خود وارد کنید:
import re
توابع اصلی ماژول re
1. re.match
این تابع بررسی میکند که آیا الگوی مشخصی در ابتدای رشته مطابقت دارد یا خیر.
مثال:
import re
pattern = r"hello"
text = "hello world"
match = re.match(pattern, text)
if match:
print("Pattern found at the start of the text!")
else:
print("Pattern not found.")
خروجی:
Pattern found at the start of the text!
2. re.search
تابع search به دنبال اولین تطبیق الگو در کل متن میگردد.
مثال:
pattern = r"world"
text = "hello world"
result = re.search(pattern, text)
if result:
print(f"Pattern found at index {result.start()}!")
else:
print("Pattern not found.")
خروجی:
Pattern found at index 6!
3. re.findall
تابع findall تمام تطبیقهای یک الگو را در متن پیدا کرده و در قالب لیست بازمیگرداند.
مثال:
pattern = r"\d+" # اعداد را پیدا میکند
text = "There are 12 apples, 15 oranges, and 7 bananas."
result = re.findall(pattern, text)
print(result)
خروجی:
['12', '15', '7']
4. re.sub
تابع sub برای جایگزینی الگوهای متن استفاده میشود.
مثال:
pattern = r"\d+"
text = "I have 2 cats and 3 dogs."
new_text = re.sub(pattern, "many", text)
print(new_text)
خروجی:
I have many cats and many dogs.
5. re.split
تابع split برای تقسیم متن براساس یک الگو استفاده میشود.
مثال:
pattern = r",\s*" # الگوی کاما با فضای اختیاری
text = "apple, banana, cherry, date"
result = re.split(pattern, text)
print(result)
خروجی:
['apple', 'banana', 'cherry', 'date']
کار با گروهها در عبارات منظم
با استفاده از پرانتزها میتوانید گروههایی را در الگو تعریف کنید و بخشهایی از متن را جداگانه استخراج کنید.
مثال:
pattern = r"(\d+)-(\d+)-(\d+)"
text = "2024-12-28"
match = re.search(pattern, text)
if match:
print(f"Year: {match.group(1)}")
print(f"Month: {match.group(2)}")
print(f"Day: {match.group(3)}")
خروجی:
Year: 2024
Month: 12
Day: 28
پرچمهای ماژول re
پرچمها گزینههای اضافی برای کنترل رفتار عبارات منظم هستند. برخی از پرچمهای رایج عبارتند از:
| پرچم | توضیح |
|---|---|
re.IGNORECASE |
نادیده گرفتن تفاوت حروف کوچک و بزرگ |
re.MULTILINE |
مطابقت با خطوط متعدد |
re.DOTALL |
شامل کردن خطوط جدید در تطبیق با . |
مثال:
pattern = r"hello"
text = "Hello world"
result = re.search(pattern, text, re.IGNORECASE)
if result:
print("Pattern found!")
خروجی:
Pattern found!
مدیریت خطاها در عبارات منظم
هنگام کار با الگوهای پیچیده، ممکن است خطاهایی رخ دهد. برای مدیریت این موارد از try-except استفاده کنید.
مثال:
try:
pattern = r"(\d+"
text = "12345"
result = re.search(pattern, text)
except re.error as e:
print(f"Error in regex pattern: {e}")
خروجی:
Error in regex pattern: missing ), unterminated subpattern at position 4
به طور کلی می توان گفت:
ماژول re ابزار قدرتمندی برای کار با متن در پایتون است. با تسلط بر توابع و قابلیتهای این ماژول، میتوانید عملیات پردازش متن را به شکلی کارآمد و حرفهای انجام دهید.
