Bendera za Mifumo ya Usimbaji Fupi wa Kawaida katika Python
Ili kuweka bendera kama moja ya vigezo vya hiari kwa njia zinazofanya kazi na usimbaji fupi wa kawaida, hutumia sintaksia ifuatayo:
flags=re.jina la bendera
Bendera kuu za kufanya kazi na usimbaji fupi wa kawaida
| Bendera | Kusudi |
|---|---|
re.IGNORECASE |
Kupuuza herufi kubwa na ndogo. |
re.DOTALL |
Nukta inamaanisha herufi yoyote, ikiwa ni pamoja na mstari mpya. |
re.I |
Hufanya utafutaji usiwe nyeti kwa herufi kubwa na ndogo. |
re.L |
Hutafuta maneno kulingana na lugha ya sasa.
Tafsiri hii inagusa kikundi cha alfabeti
(\w na \W), na pia
tabia ya mpaka wa neno (\b na
\B).
|
re.M |
Herufi $ hufanya utafutaji mwishoni mwa
mstari wowote wa maandishi (sio mwisho wa maandishi tu)
na herufi ^ hufanya utafutaji mwanzo wa
mstari wowote wa maandishi (sio mwanzo wa
maandishi tu).
|
re.S |
Hubadilisha thamani ya nukta (.) kuwa
kulingana na herufi yoyote, ikiwa ni pamoja na mstari
mpya.
|
re.U |
Hutafsiri herufi kulingana na
seti ya herufi za Unicode. Bendera hii inaathiri
tabia ya \w, \W, \b,
\B. Katika Python 3+ bendera hii
imewekwa kwa default.
|
re.X |
Huruhusu sintaksia ya mstari mwingi wa usimbaji fupi wa
kawaida. Hupuuza nafasi ndani ya
muundo (isipokuwa nafasi ndani ya
seti [] au wakati wa kuepuka
kwa mstari wa nyuma) na hushughulikia
isiyo kuepukwa '#' kama maoni.
|
Mfano
Kwa kutumia bendera re.IGNORECASE unaweza
kupuuza herufi kubwa na ndogo. Hebu
tuone jinsi hii inafanyika. Katika mfano huu
usimbaji fupi wa kawaida utapata herufi ndogo tu:
txt = 'aaa bbb CCC DDD'
res = re.sub('[a-z]+', '!', txt)
print(res)
Matokeo ya msimbo uliofanyika:
'! ! CCC DDD'
Mfano
Sasa tuongeze katika kigezo cha nne cha
nia bendera re.IGNORECASE na usimbaji fupi wa kawaida
utaanza kutafuta herufi katika herufi kubwa na ndogo zote:
txt = 'aaa AAA bbb BBB'
res = re.sub('[a-z]+', '!', txt, flags=re.IGNORECASE)
print(res)
Matokeo ya msimbo uliofanyika:
'! ! ! !'
Mfano
Wacha tupate kwa usimbaji fupi wa kawaida mistari yote mipya ya maandishi:
txt = '''aaa
bbb'''
res = re.sub('\n', '!', txt)
print(res)
Matokeo ya msimbo uliofanyika:
'aaa!bbb'
Mfano
Lakini, ikiwa unahitaji kubadilisha herufi zote kabisa, basi kwa kuweka nukta kwenye usimbaji fupi wa kawaida, mistari mipya ya maandishi haitachukuliwa:
txt = '''aaa
bbb'''
res = re.sub('.', '!', txt)
print(res)
Matokeo ya msimbo uliofanyika:
'!!!
!!!'
Mfano
Ili kurekebisha hitilafu hii, inapaswa
kutumiwa bendera re.DOTALL:
res = re.sub('.', '!', txt, flags=re.DOTALL)
print(res)
Matokeo ya msimbo uliofanyika:
'!!!!!!!'
Mfano
Kwa kigezo unaweza kupitisha na bendera kadhaa
kwa kuweka kati yao kiendeshaji +.
Kwanza tubadilishe herufi 'a'
mwishoni mwa mstari:
txt = '''
aaa
AAA
aaa'''
res = re.sub('aaa
, '!', txt)
print(res)
Matokeo ya msimbo uliofanyika:
'''
aaa
AAA
!
'''
Mfano
Sasa tuweke bendera re.M:
res = re.sub('aaa
, '!', txt, flags=re.M)
print(res)
Matokeo ya msimbo uliofanyika:
'''
!
AAA
!
'''
Mfano
Sasa tumia bendera ya kupuuza herufi kubwa na ndogo:
res = re.sub('aaa
, '!', txt, flags=re.M+re.IGNORECASE)
print(res)
Matokeo ya msimbo uliofanyika:
'''
!
!
!
'''