RegEx Python

رگ‌های عادی یا RegEx یک توالی کاراکترها برای تشکیل الگوی جستجوی هستند.

RegEx یا رگ‌های عادی می‌توانند برای بررسی این که یک رشته شامل الگوی جستجوی مشخص شده است یا خیر، استفاده شوند.

مدول RegEx

پایون ارائه‌دهنده‌ای به نام re پکجی‌های داخلی، قابل استفاده برای پردازش عبارت‌های正则 است.

ورود re پکجی

import re

RegEx در Python

ورود re پکجی که پس از وارد کردن می‌توان از عبارت‌های正则 استفاده کرد:

مثال

رشته را جستجو می‌کنیم تا ببینیم آیا با "China" شروع می‌شود و با "country" به پایان می‌رسد:

import re
txt = "China is a great country"
x = re.search("^China.*country$", txt)

مثال اجرا

функشن‌های RegEx

re پکجی که یک مجموعه از функشن‌ها را ارائه می‌دهد، اجازه می‌دهد تا رشته‌ها را برای جفت‌یابی جستجو کنیم:

функشن توضیحات
findall لیستی از جفت‌های یافت شده را بازمی‌گرداند
search اگر هر بخشی از رشته دارای جفت یافت شده باشد، جفت یافت می‌شود
split لیستی از جفت‌های یافت شده را در هر بار جفت‌یابی بازمی‌گرداند
sub با استفاده از رشته، یک یا چند جفت یافت شده را جایگزین می‌کند

کاراکترهای خاص

کاراکترهای خاصی هستند که دارای معنای خاصی هستند:

کاراکتر توضیحات مثال TIY
[] گروهی از کاراکترها "[a-m]" آموزش
\ جلسه‌های خاص نشان‌دهنده (همچنین می‌توانند برای فرار از کاراکترهای خاص استفاده شوند) "\d" آموزش
. هر کاراکتر (به استثنای کاراکترهای خطوط کشویی) "he..o" آموزش
^ به شروع می‌رسد "^hello" آموزش
$ به پایان می‌رسد "world$" آموزش
* ظهور صفر بار یا بیشتر "aix*" آموزش
+ ظهور یک بار یا بیشتر "aix+" آموزش
{} تعداد دقیق مشخص شده‌ای از ظهور "al{2}" آموزش
| هر دو "falls|stays" آموزش
() گرفتن و گروه‌بندی

جلسه‌های خاص

جلسه‌های خاص به معنای \ دنبال یکی از کاراکترهای زیر دارد، دارای معنای خاصی است:

کاراکتر توضیحات مثال TIY
\A اگر کاراکتر مشخص شده در ابتدای رشته وجود دارد، جفت یافت می‌شود "\AThe" آموزش
\b یک جفت یافت می‌شود که کاراکتر مشخص شده در ابتدای یا انتهای کلمه قرار دارد r"\bain"
r"ain\b"
آموزش
آموزش
\B یک جفت یافت می‌شود که کاراکتر مشخص شده وجود دارد اما در ابتدای کلمه (یا انتهای آن) نیست r"\Bain"
r"ain\B"
آموزش
آموزش
\d یک جفت یافت می‌شود که رشته شامل اعداد (0-9) است "\d" آموزش
\D یک جفت یافت می‌شود که رشته شامل هیچ عددی نیست "\D" آموزش
\s یک جفت یافت می‌شود که رشته شامل هر کاراکتر خالی است "\s" آموزش
\S یک جفت یافت می‌شود که رشته شامل هیچ کاراکتر خالی نیست "\S" آموزش
\w یک جفت یافت می‌شود که رشته شامل هر کاراکتر کلمه‌ای است
کاراکترهایی از a تا Z، اعداد از 0 تا 9 و خط تیره زیرین _
"\w" آموزش
\W یک جفت یافت می‌شود که رشته شامل هیچ کاراکتر کلمه‌ای نیست "\W" آموزش
\Z اگر کاراکتر مشخص شده در انتهای رشته وجود دارد، جفت یافت می‌شود "Spain\Z" آموزش

مجموعه (Set)

مجموعه (Set) یک جفت brackets است [] یک گروه از کاراکترها در میان برackets، که دارای معنای خاصی هستند:

مجموعه توضیحات آموزش
[arn] تطابق یک کاراکتر که یکی از کاراکترهای指定 شده (a، r یا n) را شامل شود آموزش
[a-n] تطابق هر کاراکتر کوچکی بین حروف الفبا a و n را بازمی‌گرداند آموزش
[^arn] تطابق هر کاراکتری غیر از a، r و n را بازمی‌گرداند آموزش
[0123] تطابق هر عددی از 0، 1، 2 یا 3 را بازمی‌گرداند آموزش
[0-9] تطابق هر عددی بین 0 و 9 را بازمی‌گرداند آموزش
[0-5][0-9] تطابق همه اعداد بین 0 تا 9 را بازمی‌گرداند آموزش
[a-zA-Z] تطابق همه کاراکترهایی که بین حروف الفبا a و z قرار دارند را بازمی‌گرداند، بزرگ یا کوچک آموزش
[+] در مجموعه، +، *، .، |، ()، $، {} هیچ معنای خاصی ندارند، بنابراین [+] به این معناست: تطابق همه کاراکترهای + در رشته را بازمی‌گرداند آموزش

توابع findall()

findall() این تابع لیستی از همه تطابق‌ها بازمی‌گرداند.

مثال

لیست همه تطابق‌ها را چاپ کنید:

import re
str = "China is a great country"
x = re.findall("a", str)
print(x)

مثال اجرا

این لیست شامل تطابق‌ها به ترتیب یافت شده است.

اگر هیچ تطابق یافت نشد، لیست خالی بازمی‌گرداند:

مثال

اگر هیچ تطابق یافت نشد، لیست خالی بازمی‌گرداند:

import re
str = "China is a great country"
x = re.findall("USA", str)
print(x)

مثال اجرا

توابع search()

search() این تابع تطابق‌های رشته را جستجو می‌کند و اگر تطابق وجود دارد، یک شیء Match بازمی‌گرداند.

اگر چندین تطابق وجود دارد، تنها اولین تطابق را بازمی‌گرداند:

مثال

اولین کاراکتر خالی در رشته را جستجو کنید:

import re
str = "China is a great country"
x = re.search("\s", str)
print("موقعیت اولین کاراکتر خالی: ", x.start())

مثال اجرا

اگر هیچ تطابق یافت نشد، مقدار بازگشتی: هیچ‌چیزی:

مثال

جستجو بدون بازگشت نتایج مطابقت:

import re
str = "China is a great country"
x = re.search("USA", str)
print(x)

مثال اجرا

توابع split()

split() این تابع یک لیست بازمی‌گرداند که در آن رشته‌ها در هر بار که با آن‌ها مطابقت یافتند، شکسته شده‌اند:

مثال

در هر کاراکتر خالی رشته را شکست:

import re
str = "China is a great country"
x = re.split("\s", str)
print(x)

مثال اجرا

شما می‌توانید با مشخص کردن maxsplit با استفاده از پارامتر برای کنترل تعداد دفعات:

مثال

تنها در اولین بار که به آن اشاره می‌شود، رشته را شکست:

import re
str = "China is a great country"
x = re.split("\s", str, 1)
print(x)

مثال اجرا

توابع sub()

sub() این تابع متن شما را با متن انتخابی شما جایگزین می‌کند:

مثال

با استفاده از عدد 9، همه کاراکترهای خالی را جایگزین کنید:

import re
str = "China is a great country"
x = re.sub("\s", "9", str)
print(x)

مثال اجرا

شما می‌توانید با مشخص کردن count پارامتر برای کنترل تعداد جایگزین‌ها:

مثال

دو بار اول را جایگزین کنید:

import re
str = "China is a great country"
x = re.sub("\s", "9", str, 2)
print(x)

مثال اجرا

شیء Match

شیء Match یک شیء است که شامل اطلاعات مربوط به جستجو و نتایج است.

توضیح:اگر هیچ تطابق‌یافته‌ای نباشد، مقدار بازگشتی هیچ‌چیزی، به جای شیء Match.

مثال

اجرای این کد به شیء Match بازمی‌گردد:

import re
str = "China is a great country"
x = re.search("a", str)
print(x) # یک شیء را چاپ می‌کند

مثال اجرا

شیء Match ارائه‌دهنده‌ای از ویژگی‌ها و روش‌هایی برای دسترسی به اطلاعات مربوط به جستجو و نتایج است:

  • span() تکمیل‌های بازگشتی شامل موقعیت شروع و پایان تطابق‌یافته‌ها هستند
  • .string رشته‌ای که به فونکشن ورودی داده شده را بازگردانید
  • group() بخش‌های تطابق‌یافته را بازگردانید

مثال

موقعیت اولین تطابق‌یافته (موقعیت شروع و پایان) را چاپ کنید.

جستجوی عبارت‌های حاوی حرف بزرگ "C" به عنوان اولین حرف هر کلمه:

import re
str = "China is a great country"
x = re.search(r"\bC\w+", str)
print(x.span())

مثال اجرا

مثال

رشته‌ای که به فونکشن ورودی داده شده را چاپ کنید:

import re
str = "China is a great country"
x = re.search(r"\bC\w+", str)
print(x.string)

مثال اجرا

مثال

بخش‌های تطابق‌یافته را چاپ کنید.

جستجوی عبارت‌های حاوی حرف بزرگ "C" به عنوان اولین حرف هر کلمه:

import re
str = "China is a great country"
x = re.search(r"\bC\w+", str)
print(x.group())

مثال اجرا

توضیح:اگر هیچ گزینه‌ای مطابقت نداشته باشد، مقدار بازگشتی هیچ‌چیزی، به جای شیء Match.