⊗pyPmREESCh 36 of 129 menu

Speciālo rakstzīmju ešķēšana Python regulārajās izteiksmēs

Pieņemsim, ka ir nepieciešams panākt, lai speciālā rakstzīme apzīmētu pati sevi. Lai to izdarītu, tā jāešķē ar apgriezto slīpsvītru. Apskatīsim to ar piemēriem.

Piemērs

Šajā piemērā regulārās izteiksmes autors vēlējās, lai meklēšanas šablons izskatītos šādi: burts 'a', tad plus zīme '+', tad burts 'x'. Tomēr, koda autors neiešķēra simbolu '+', un tāpēc meklēšanas šablons patiesībā izskatās šādi: burts 'a' viens vai vairāk reižu, tad burts 'x':

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

Koda izpildes rezultāts:

'a+x ! ! !'

Piemērs

Šoreiz autors ir iešķējis plus zīmi ar apgriezto slīpsvītru. Tagad meklēšanas šablons izskatās tā, kā vajadzētu: burts 'a', tad plus zīme '+', tad burts 'x':

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

Koda izpildes rezultāts:

'! ax aax aaax'

Piemērs

Šajā piemērā šablons izskatās šādi: burts 'a', tad punkts '.', tad burts 'x':

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

Koda izpildes rezultāts:

'! abx azx'

Piemērs

Nākamajā piemērā autors aizmirsa iešķēt slīpsvītru un ar regulāro izteiksmi tika iekļautas visas apakšvirknes, jo neiešķērtais punkts apzīmē jebkuru simbolu:

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

Koda izpildes rezultāts:

'! ! !'

Piezīme

Ievērojiet, ka, ja jūs aizmirsīsiet apgriezto slīpsvītru punktam (kad tam vajadzētu apzīmēt pats sevi) - to varētu pat nepamanīt:

res = re.sub('a.x', '!', 'a.x') print(res) # atgriezīs '!', kā mēs gribējām

Vizuāli darbojas pareizi (tā kā punkts apzīmē jebkuru simbolu, tostarp arī parastu punktu '.'). Bet, ja mainīsiet virkni, kurā notiek aizvietošana - mēs ieraudzīsim savu kļūdu:

res = re.sub('a.x', '!', 'a.x abx azx') print(res) # atgriezīs '! ! !', bet gaidījās '! abx azx'

Speciālo un parasto simbolu saraksts

Ja ešķē parasto simbolu - nekas briesmīgs nenotiks - tas tik un tā būs apzīmējis pats sevi. Izņēmums - cipari, tos nevar ešķēt.

Bieži rodas šaubas, vai šis simbols ir speciāls. Daži nonāk līdz tam, ka ešķē visus aizdomīgos simbolus pēc kārtas. Tomēr, tā ir slikta prakse (aizsērē regulāro izteiksmi ar apgrieztajiem slīpsvītram).

Ir speciālie simboli: $ ^ . * + ? \ / {} [] () |

Nav speciālie simboli: @ : , ' " - _ = < > % # ~ `& !

Praktiskie uzdevumi

Dota virkne:

txt = 'a.a aba aea'

Uzrakstiet regulāro izteiksmi, kas atradīs virkni 'a.a', neiekļaujot pārējās.

Dota virkne:

txt = '2+3 223 2223'

Uzrakstiet regulāro izteiksmi, kas atradīs virkni '2+3', neiekļaujot pārējās.

Dota virkne:

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

Uzrakstiet regulāro izteiksmi, kas atradīs virknes '2+3', '2++3', '2+++3', neiekļaujot pārējās (+ var būt jebkurš daudzums).

Dota virkne:

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

Uzrakstiet regulāro izteiksmi, kas atradīs virknes '23', '2+3', '2++3', '2+++3', neiekļaujot pārējās.

Dota virkne:

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

Uzrakstiet regulāro izteiksmi, kas atradīs virknes '*q+', '*qq+', '*qqq+', neiekļaujot pārējās.

Dota virkne:

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

Uzrakstiet regulāro izteiksmi, kas atradīs virknes kvadrātiekavās un aizvietos tās ar '!'.

Latviešu
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mēs izmantojam sīkdatnes, lai nodrošinātu vietnes darbību, analīti un personalizāciju. Datu apstrāde notiek saskaņā ar Konfidencialitātes politiku.
pieņemt visus iestatīt noraidīt