⊗pyPmREESCh 36 of 129 menu

Erisümbolite ekraniseerimine Pythoni regulaaravaldistes

Oletame, et on vaja teha nii, et erisümbol tähistaks iseennast. Selleks tuleb seda ekraniseerida kurakaldkriipsuga. Vaatame näidete varal.

Näide

Järgmises näites soovis regulaaravaldise autor, et otsimustempli näeks välja selline: täht 'a', siis pluss '+', siis täht 'x'. Siiski, autor ei ekraniseerinud sümbolit '+' ja seetõttu on otsimustempl tegelikult selline: täht 'a' üks või mitu korda, siis täht 'x':

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

Koodi täitmise tulemus:

'a+x ! ! !'

Näide

Nüüd on autor ekraniseerinud plussi kurakaldkriipsuga. Nüüd näeb otsimustempl välja nagu vaja: täht 'a', siis pluss '+', siis täht 'x':

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

Koodi täitmise tulemus:

'! ax aax aaax'

Näide

Selles näites näeb templi välja selline: täht 'a', siis punkt '.', siis täht 'x':

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

Koodi täitmise tulemus:

'! abx azx'

Näide

Järgmises näites unustas autor ekraniseerida kaldkriipsu ja regulaaravaldisele vastasid kõik alamsõned, kuna ekraniseerimata punkt tähistab suvalist sümbolit:

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

Koodi täitmise tulemus:

'! ! !'

Märkus

Pange tähele, et kui te unustate punkti jaoks kurakaldkriipsu (kui see peaks tähistama iseennast) - siis võib seda isegi märkamata jääda:

res = re.sub('a.x', '!', 'a.x') print(res) # tagastab '!', nagu me soovisimegi

Visuaalselt töötab õigesti (kuna punkt tähistab suvalist sümbolit, sealhulgas ka tavalist punkti '.'). Kuid kui muuta sõnet, milles asendused toimuvad - näeme meie viga:

res = re.sub('a.x', '!', 'a.x abx azx') print(res) # tagastab '! ! !', kuid oodati '! abx azx'

Erisümbolite ja tavaliste sümbolite loetelu

Kui ekraniseerida tavaline sümbol - ei juhtu midagi halba - see ikkagi tähistab iseennast. Erandiks on numbrid, neid ei saa ekraniseerida.

Sageli tekib kahtlus, kas antud sümbol on erisümbol. Mõned jõuavad selleni, et ekraniseerivad kõik kahtlased sümbolid ühekaupa. Siiski, see on halb komme (teeb regulaaravaldise kurakaldkriipsudega umbselt täis).

Erisümbolid on: $ ^ . * + ? \ / {} [] () |

Ei ole erisümbolid: @ : , ' " - _ = < > % # ~ `& !

Praktilised ülesanded

Antud sõne:

txt = 'a.a aba aea'

Kirjutage regulaaravaldis, mis leiab sõne 'a.a', haaramata ülejäänud.

Antud sõne:

txt = '2+3 223 2223'

Kirjutage regulaaravaldis, mis leiab sõne '2+3', haaramata ülejäänud.

Antud sõne:

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

Kirjutage regulaaravaldis, mis leiab sõned '2+3', '2++3', '2+++3', haaramata ülejäänud (+ võib olla suvaline kogus).

Antud sõne:

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

Kirjutage regulaaravaldis, mis leiab sõned '23', '2+3', '2++3', '2+++3', haaramata ülejäänud.

Antud sõne:

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

Kirjutage regulaaravaldis, mis leiab sõned '*q+', '*qq+', '*qqq+', haaramata ülejäänud.

Antud sõne:

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

Kirjutage regulaaravaldis, mis leiab sõned ruutsulgudes ja asendab need '!'-ga.

Eesti
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Me kasutame saidi toimimiseks, analüüsi ja personaliseerimiseks küpsiseid. Andmete töötlemine toimub vastavalt Privaatsuspoliitikale.
nõustu kõigega häälesta keeldu