⊗pyPmREESCh 36 of 129 menu

Ulinzi wa Herufi Maalum katika Usanifu (Regex) wa Python

Tuseme unahitaji kufanya herufi maalum iashirie yenyewe. Ili kufanya hivyo inapaswa kulindwa kwa kutumia mshale wa nyuma. Tuangalie kwa mifano.

Mfano

Katika mfano ufuatao mwandishi wa regex alitaka, muundo wa utafutaji uonekane kama hivi: herufi 'a', kisha alama ya jumlisha '+', kisha herufi 'x'. Hata hivyo, mwandishi wa kodi hakuilinda alama '+' na kwa hivyo muundo wa utafutaji kweli unaonekana hivi: herufi 'a' mara moja au zaidi, kisha herufi 'x':

txt = 'a+x ax aax aaax' res = re.sub('a+x', '!', txt) print(res)

Matokeo ya utekelezaji wa kodi:

'a+x ! ! !'

Mfano

Sasa mwandishi ameilinda alama ya jumlisha kwa mshale wa nyuma. Sasa muundo wa utafutaji unaonekana kama inavyopaswa: herufi 'a', kisha alama ya jumlisha '+', kisha herufi 'x':

txt = 'a+x ax aax aaax' res = re.sub('a\+x', '!', txt) print(res)

Matokeo ya utekelezaji wa kodi:

'! ax aax aaax'

Mfano

Katika mfano huu muundo unaonekana hivi: herufi 'a', kisha nukta '.', kisha herufi 'x':

txt = 'a.x abx azx' res = re.sub('a\.x', '!', txt) print(res)

Matokeo ya utekelezaji wa kodi:

'! abx azx'

Mfano

Katika mfano ufuatao mwandishi amesahau kulinda alama ya nukta na kila kipande cha herufi kiliingia chini ya regex, kwa sababu nukta isiyolindwa inaashiria herufi yoyote:

txt = 'a.x abx azx' res = re.sub('a.x', '!', txt) print(res)

Matokeo ya utekelezaji wa kodi:

'! ! !'

Uzingatiaji

Zingatia kuwa ikiwa utasahau mshale wa nyuma kwa nukta (wakati inapaswa kuashiria yenyewe) - hii inaweza usiione:

res = re.sub('a.x', '!', 'a.x') print(res) # atarudisha '!', kama tulivyotaka

Kwa kuonekana inafanya kazi sawa (kwa sababu nukta inaashiria herufi yoyote, pamoja na nukta ya kawaida '.'). Lakini ikiwa utabadilisha mstari ambao unafanywa vibadala - tutaona makosa yetu:

res = re.sub('a.x', '!', 'a.x abx azx') print(res) # atarudisha '! ! !', lakini tulitarajia '! abx azx'

Orodha ya alama maalum na za kawaida

Ikiwa utalinda herufi ya kawaida - hakuna jambo baya litakalotokea - bado itaashiria yenyewe. Isipokuwa - nambari, haziwezi kulindwa.

Mara nyingi huwa na mashaka, ikiwa alama fulani ni maalum. Wengine hufika hadi kufika kwenye kuzilinda alama zote zenye mashaka mfululizo. Hata hivyo, hii ni tabia mbaya (ichafue regex kwa mishale ya nyuma).

Ni alama maalum: $ ^ . * + ? \ / {} [] () |

Si alama maalum: @ : , ' " - _ = < > % # ~ `& !

Kazi za Vitendo

Umepewa mstari:

txt = 'a.a aba aea'

Andika regex, ambayo itapata mstari 'a.a', bila kukamata mengine.

Umepewa mstari:

txt = '2+3 223 2223'

Andika regex, ambayo itapata mstari '2+3', bila kukamata mengine.

Umepewa mstari:

txt = '23 2+3 2++3 2+++3 345 567'

Andika regex, ambayo itapata mistari '2+3', '2++3', '2+++3', bila kukamata mengine (+ inaweza kuwa idadi yoyote ya nyakati).

Umepewa mstari:

txt = '23 2+3 2++3 2+++3 445 677'

Andika regex, ambayo itapata mistari '23', '2+3', '2++3', '2+++3', bila kukamata mengine.

Umepewa mstari:

txt = '*+ *q+ *qq+ *qqq+ *qqq qqq+'

Andika regex, ambayo itapata mistari '*q+', '*qq+', '*qqq+', bila kukamata mengine.

Umepewa mstari:

txt = '[abc] {abc} abc (abc) [abc]'

Andika regex, ambayo itapata mistari kwenye mabano mraba na ibadilishe kwa '!'.

Kiswahili
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Tunatumia kuki kwa ajili ya uendeshaji wa tovuti, uchambuzi na ubinafsishaji. Usindikaji wa data unafanyika kulingana na Sera ya Faragha.
kubali yote sanidi kataa