عبارات منظم (RegEx)
«عبارت منظم (Regular Expression)» الگویی برای جست وجو در متن است. با آن می سنجیم یک رشته، الگوی دلخواه را دارد یا نه. مثل جست وجوی اسم دانش آموز در لیست کلاس.
ماژول re در پایتون
پایتون بسته داخلی re دارد. با آن روی الگوها کار می کنیم.
import re
جست وجوی ساده با الگو
شروع با «The» و پایان با «Spain» را بررسی کن.
import re
txt = "The rain in Spain"
x = re.search("^The.*Spain$", txt)
توابع پرکاربرد RegEx
findall() همه تطبیق ها را لیست می دهد.
import re
txt = "The rain in Spain"
x = re.findall("ai", txt)
print(x)
search() اولین تطبیق را برمی گرداند.
import re
txt = "The rain in Spain"
x = re.search("\s", txt)
print("The first white-space character is located in position:", x.start())
split() متن را سر هر تطبیق می بُرد.
import re
txt = "The rain in Spain"
x = re.split("\s", txt)
print(x)
sub() تطبیق ها را با متن دلخواه جایگزین می کند.
import re
txt = "The rain in Spain"
x = re.sub("\s", "9", txt)
print(x)
فلگ ها (Flags) برای الگوها
با فلگ ها رفتار جست وجو عوض می شود. مثلاً بی توجه به حروف بزرگ.
import re
txt = "The rain in Spain"
x = re.search("spain", txt, re.IGNORECASE)
print(x is not None)
Match Object و اطلاعات تطبیق
شی Match جزئیات تطبیق را می دهد؛ مثل بازه و متن.
import re
txt = "The rain in Spain"
x = re.search(r"\bS\w+", txt)
print(x.span())
import re
txt = "The rain in Spain"
x = re.search(r"\bS\w+", txt)
print(x.string)
import re
txt = "The rain in Spain"
x = re.search(r"\bS\w+", txt)
print(x.group())
نکته: اگر تطبیقی نباشد، نتیجه None است. قبل از استفاده، بررسی کن.
گام های عملی
- الگو بساز و با
searchتست کن. - همه تطبیق ها را با
findallبگیر. - با
subوsplitمتن را تغییر بده.
جمع بندی سریع
reبرای کار با الگوهاست.searchفقط اولین تطبیق را می دهد.findallهمه تطبیق ها را می آورد.splitمی بُرد؛subجایگزین می کند.- فلگ ها رفتار جست وجو را عوض می کنند.
نکته: برای داده های متنی ساخت یافته، صفحه جیسون پایتون را ببین. همچنین پس از این مبحث، به مدیریت بسته ها با pip سر بزن. این صفحه عبارات منظم پایتون را نشانه گذاری کن.