ماژول RegEx

RegEx یک ماژول در پایتون است و  با نام re شناخته میشود و توسط پایتون فراخوانی میشود.

import re

مخفف Regular Expression است و مجموعه ای از کاراکترهارا در برمیگیرد که الگویی از جستجو هارا مشخص میکند.

به مثال زیر توجه کنید.

^v...e$

در مثال بالا ما باید یک رشته 5 حرفی با حرف اول v و حرف آخر e بنویسیم در غیر اینصورت میتوانیم یک خطا ایجاد کنیم.

مثال کاربردی

در نمونه کد زیر یک مثال کامل از این ماژول را مشاهده میکنیم و در ادامه نکات آنرا بررسی میکنیم.

import re

txt= '^v...e$'
test = 'vaaae'
result = re.match(txt, test)

if result:
  print("true")
else:
  print("false")
  • در نمونه کد بالا ابتدا رشته کاراکتر های خودرا ایجاد کردیم.
  • یک رشته بعنوان ورودی نوشتیم.
  • سپس در متغیر result از ماژول استفاده کردیم تا بررسی کند که دو رشته منطبق هستند.
  • در صورت منطبق بودن کلمه true و درغیر اینصورت کلمه false چاپ میشود.

ایجاد الگو

برای ایجاد الگوهای مورد نظر خودمان را بسازیم باید از متاکاراکتر ها استفاده کنیم.

متاکاراکتر چیست؟

متاکاراکترها در اصل کاراکترهایی از ماژول regex هستند که توسط این ماژول تفسیر میشوند و قابل استفاده اند.

[] . ^ $ * + ? {} () \ |

در جدول زیر همه ی کاربرد های این متاکاراکترهارا میبینیم.

کاراکتر کاربرد مثال
[] مجموعه ای از کاراکترها "[a-m]"
\ پرش از برخی کاراکترها "\d"
. جایگاه دیگر کاراکترهای بدون اهمیت "he..o"
^ شروع رشته "^hello"
$ پایان رشته "planet$"
* تعداد وقوع یک رشته از صفر "he.*o"
+ تعداد وقوع یک رشته از یک "he.+o"
? تعداد وقوع یک رشته از صفر "he.?o"
{} تطابق دقیقا به یک میزان خاص "he.{2}o"
| به جای or استفاده میشود "falls|stays"
() گروه کردن الگو ها --------------

تابع ()finall

این تابع لیستی از همه ی مقادیری که منطبق با الگو است را برمیگرداند.

import re

txt = "hello"
x = re.findall("hel", txt)
print(x)

 

نکته: اگر هیچ مقداری منطبق نباشد یک لیست خالی برمیگرداند.

 

تابع search()

این تابع اولین مورد انطباق را برمیگرداند.

اگر چند مورد از آن وجود داشته باشد، جایپاه اولین مورد را برمیگرداند.

import re

txt = "hel lo"
x = re.search("\s", txt)

print(x.start())

نمونه کد بالا جایگاه اولین فاصله را برمیگرداند.

نکته: اگر جوابی وجود نداشته باشد None را برمیگرداند.

 

تابع split()

این تابع لیستی را برمیگرداند که در هر قسمت منطبق بودن آنرا تقسیم کرده است.

import re

txt = "hello i am alireza"
x = re.split("\s", txt)
print(x)

تابع ()sub

موارد منطبق را با مقداری جدید میتواند عوض کند.

import re

txt = "hello i am alireza"
x = re.sub("\s", "5", txt)
print(x)

خلاصه درس

  • برای ایجاد یک محدودیت در جستجو بکار میرود.
  • متاکارکتر ها کاراکتر های قابل استفاده در این ماژول هستند.

توسعه دهندگان
علیرضا چمنی