⊗pyPmREESCh 36 of 129 menu

Ekranizimi i Simboleve Speciale në Regex Python

Supozoni se duhet të bëni që simboli special të përfaqësojë vetveten. Për këtë ai duhet të ekranizohet duke përdorur backslash. Le të shohim me shembuj.

Shembull

Në shembullin vijues, autori i regex donte që modeli i kërkimit të dukej kështu: shkronja 'a', pastaj plus '+', pastaj shkronja 'x'. Megjithatë, autori i kodit nuk e ka ekranizuar simbolin '+' dhe për këtë arsye modeli i kërkimit në të vërtetë duket kështu: shkronja 'a' një ose më shumë herë, pastaj shkronja 'x':

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

Rezultati i ekzekutimit të kodit:

'a+x ! ! !'

Shembull

Tani autori e ka ekranizuar plus-in me backslash. Tani modeli i kërkimit duket ashtu sic duhet: shkronja 'a', pastaj plus '+', pastaj shkronja 'x':

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

Rezultati i ekzekutimit të kodit:

'! ax aax aaax'

Shembull

Në këtë shembull, modeli duket kështu: shkronja 'a', pastaj pikë '.', pastaj shkronja 'x':

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

Rezultati i ekzekutimit të kodit:

'! abx azx'

Shembull

Në shembullin vijues autori harroi të ekranizonte pikën dhe nën regex kanë rënë të gjitha nënvargjet, sepse pika e paekranizuar përfaqëson çdo simbol:

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

Rezultati i ekzekutimit të kodit:

'! ! !'

Vërejtje

Kushtojini vëmendje faktit që nëse ju harroni backslash për pikën (kur ajo duhet të përfaqësojë vetveten) - kjo mund të mos vihet re:

res = re.sub('a.x', '!', 'a.x') print(res) # kthen '!', ashtu siç donim

Vizualisht funksionon siç duhet (pasi pika përfaqëson çdo simbol, përfshirë edhe pikën e zakonshme '.'). Por nëse ndryshojmë vargun, në të cilin ndodhin zëvendësimet - ne do të shohim gabimin tonë:

res = re.sub('a.x', '!', 'a.x abx azx') print(res) # kthen '! ! !', por pritej '! abx azx'

Lista e simboleve speciale dhe të zakonshme

Nëse ekranizoni një simbol të zakonshëm - asgjë e tmerrshme nuk do të ndodhë - ai prapë do të përfaqësojë vetveten. Përjashtim - shifrat, ato nuk mund të ekranizohen.

Shpesh lind dyshimi, nëse një simbol i caktuar është special. Disa njerëz arrijnë deri aty që ekranizojnë të gjitha simbolet të dyshimta radhazi. Megjithatë, kjo është praktikë e keqe (e bën regex të ndyrë me backslashe).

Janë simbole speciale: $ ^ . * + ? \ / {} [] () |

Nuk janë simbole speciale: @ : , ' " - _ = < > % # ~ `& !

Detyra praktike

Është dhënë vargu:

txt = 'a.a aba aea'

Shkruani një regex që do të gjejë vargun 'a.a', pa kapur të tjerët.

Është dhënë vargu:

txt = '2+3 223 2223'

Shkruani një regex që do të gjejë vargun '2+3', pa kapur të tjerët.

Është dhënë vargu:

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

Shkruani një regex që do të gjejë vargjet '2+3', '2++3', '2+++3', pa kapur të tjerët (+ mund të jetë çdo numër).

Është dhënë vargu:

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

Shkruani një regex që do të gjejë vargjet '23', '2+3', '2++3', '2+++3', pa kapur të tjerët.

Është dhënë vargu:

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

Shkruani një regex që do të gjejë vargjet '*q+', '*qq+', '*qqq+', pa kapur të tjerët.

Është dhënë vargu:

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

Shkruani një regex që do të gjejë vargjet në kllapa katrore dhe do t'i zëvendësojë ato me '!'.

Shqip
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ne përdorim cookie për funksionimin e sajtit, analizën dhe personalizimin. Përpunimi i të dhënave bëhet në përputhje me Politikën e Privatësisë.
prano të gjitha konfiguro refuzo