متا کارکتر نقطه یا .
متا نویسه نقطه (.) مخفف هر کاراکتر منفرد در متن است.
import re
words = ('seven', 'even', 'prevent', 'revenge', 'maven',
'eleven', 'amen', 'event')
pattern = re.compile(r'.even')
for word in words:
if re.match(pattern, word):
print(f'The {word} matches')
در مثال ، ما یک تاپل با هشت کلمه داریم. ما یک الگوی حاوی نقطه متاکارکتررا روی هر یک از کلمات اعمال می کنیم.
pattern = re.compile(r'.even')
نقطه مخفف هر کاراکتر واحد در متن است. شخصیت باید حضور داشته باشد.
The seven matches
The revenge matches
دو کلمه با الگوی مطابقت دارد: seven و revenge
استفاده از علامت ?
کاراکتر متا علامت سوال (؟) یک کمیت ساز است که با عنصر قبلی صفر یا یک بار مطابقت دارد.
import re
words = ('seven', 'even','prevent', 'revenge', 'maven',
'eleven', 'amen', 'event')
pattern = re.compile(r'.?even')
for word in words:
if re.match(pattern, word):
print(f'The {word} matches')
در مثال ، ما یک علامت سوال بعد از نقطه اضافه می کنیم. این بدان معنی است که در الگو می توانیم یک کارکتر دلخواه داشته باشیم یا نمی توانیم آنجا کاراکتری داشته باشیم.
The seven matches
The even matches
The revenge matches
The event matches
این بار ، علاوه بر Seven و revenge ، کلمات even و event نیز مطابقت دارند.
استفاده از علامت ^
لنگرها موقعیت های کاراکترها را در متن مشخصی مطابقت می دهند. هنگام استفاده از ^ ، مطابقت باید در ابتدای رشته و هنگام استفاده از $ ، مطابقت باید در انتهای رشته رخ دهد.
import re
sentences = ('I am looking for Jane.',
'Jane was walking along the river.',
'Kate and Jane are close friends.')
pattern = re.compile(r'^Jane')
for sentence in sentences:
if re.search(pattern, sentence):
print(sentence)
در مثال ، ما سه جمله داریم. الگوی جستجو ^ Jane است. این الگو بررسی می کند که رشته "Jane" در ابتدای متن قرار دارد یا خیر.
تطابق دقیق یا Exact
مطابقت دقیق را می توان با تابع fullmatch یا با قرار دادن اصطلاح بین آن انجام داد: ^ و $.
import re
words = ('book', 'bookworm', 'Bible',
'bookish','cookbook', 'bookstore', 'pocketbook')
pattern = re.compile(r'^book$')
for word in words:
if re.search(pattern, word):
print(f'The {word} matches')
در مثال ، ما به دنبال یک مطابقت دقیق برای اصطلاح "book" هستیم.
کلاس های کارکتر
یک کلاس کاراکتر مجموعه ای از کاراکترها را تعریف می کند که هر یک از آنها می تواند در یک رشته ورودی برای موفقیت یک تطابق وجود داشته باشد.
import re
words = ('a gray bird', 'grey hair', 'great look')
pattern = re.compile(r'gr[ea]y')
for word in words:
if re.search(pattern, word):
print(f'{word} matches')
در مثال ، ما از کلاس کاراکتر استفاده می کنیم تا کلمات gray و greyرا شامل شود.
pattern = re.compile(r'gr[ea]y')
کلاس [ea] اجازه می دهد تا از کارکتر های "e" یا "a" در الگو استفاده شود.
حساسیت به بزرگ یا کوچک بودن لغات
به طور پیش فرض ، مطابقت الگوها به حروف کوچک بزرگ حساس است. با عبور re.IGNORECASE به تابع کامپایل ، می توانیم آن را نسبت به حروف بزرگ حساس نکنیم.
import re
words = ('dog', 'Dog', 'DOG', 'Doggy')
pattern = re.compile(r'dog', re.IGNORECASE)
for word in words:
if re.match(pattern, word):
print(f'{word} matches')
در مثال ، ما الگوی مورد نظر را بدون در نظر گرفتن مورد به کار می بریم.
dog matches
Dog matches
DOG matches
Doggy matches
گزینه ها یا Alternations
اپراتور تناوب | یک عبارت منظم با چندین انتخاب ایجاد می کند.
import re
words = ("Jane", "Thomas", "Robert",
"Lucy", "Beky", "John", "Peter", "Andy")
pattern = re.compile(r'Jane|Beky|Robert')
for word in words:
if re.match(pattern, word):
print(word)
ما هشت نام در این لیست داریم.
pattern = re.compile(r'Jane|Beky|Robert')
این عبارت منظم به دنبال رشته های "jane" ، "beky" یا "robert" است.
تابع یابنده یا finditer
تابع finditer یک تکرار کننده را ارائه می دهد که اشیا match مطابقت را در تمام موارد غیر همپوشانی همسان برای الگوی موجود در یک رشته باز می گرداند.
import re
text = 'I saw a fox in the wood. The fox had red fur.'
pattern = re.compile(r'fox')
found = re.finditer(pattern, text)
for item in found:
s = item.start()
e = item.end()
print(f'Found {text[s:e]} at {s}:{e}')
در مثال ، ما اصطلاح "fox" را در متن جستجو می کنیم. ما از مکرر موارد منطبق برمی آییم و آنها را با شاخص های آنها چاپ می کنیم.
s = item.start()
e = item.end()
توابع شروع و پایان به ترتیب شاخص شروع و پایان را برمی گردانند.
Found fox at 8:11
Found fox at 29:32