⊗pyPmREESCh 36 of 129 menu

Speciális karakterek escape-elése Python reguláris kifejezésekben

Tegyük fel, hogy azt szeretnénk elérni, hogy egy speciális karakter önmagát jelölje. Ehhez escape-elni kell egy visszaperjelell. Nézzük meg példákon keresztül.

Példa

A következő példában a reguláris kifejezés szerzője azt szerette volna, hogy a keresési minta így nézzen ki: 'a' 'a' betű, majd egy plusz '+', majd 'x' betű. A kód szerzője azonban nem escape-elte a '+' karaktert, ezért a keresési minta valójában így néz ki: 'a''a' betű egy vagy többször, majd 'x' betű:

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

A kód végrehajtásának eredménye:

'a+x ! ! !'

Példa

Ebben a példában a szerző escape-elte a pluszt egy visszaperjelell. Most a keresési minta úgy néz ki, ahogy kellene: 'a''a' betű, majd plusz '+', majd 'x' betű:

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

A kód végrehajtásának eredménye:

'! ax aax aaax'

Példa

Ebben a példában a minta így néz ki: 'a''a' betű, majd pont '.', majd 'x' betű:

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

A kód végrehajtásának eredménye:

'! abx azx'

Példa

A következő példában a szerző elfelejtette escape-elni a pontot, és a reguláris kifejezés mindig találatot ad, mivel az escape-elatlan pont bármely karaktert jelent:

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

A kód végrehajtásának eredménye:

'! ! !'

Megjegyzés

Figyeljük meg, hogy ha elfelejtjük a visszaperjelet a pont escape-eléséhez (amikor önmagát kellene jelölje) - ezt talán észre sem vesszük:

res = re.sub('a.x', '!', 'a.x') print(res) # visszaadja '!'-t, ahogy szerettük volna

Vizuálisan helyesen működik (mivel a pont bármely karaktert jelent, beleértve a közönséges pontot '.' is). De ha megváltoztatjuk a sztringet, amelyben a csere történik - meglátjuk a hibánkat:

res = re.sub('a.x', '!', 'a.x abx azx') print(res) # visszaadja '! ! !'-t, de '! abx azx' várt

Speciális és közönséges karakterek listája

Ha egy közönséges karaktert escape-elünk - nincs semmi baj - továbbra is önmagát fogja jelenteni. Kivételt képeznek a számok, azokat nem szabad escape-elni.

Gyakran merül fel a kérdés, hogy egy adott karakter speciális-e. Vannak, akik addig mennének, hogy az összes gyanús karaktert escape-elik. Ez azonban rossz gyakorlat (összeklászolja a reguláris kifejezést visszaperjelekkel).

Speciális karakterek: $ ^ . * + ? \ / {} [] () |

Nem speciális karakterek: @ : , ' " - _ = < > % # ~ `& !

Gyakorlati feladatok

Adott a következő sztring:

txt = 'a.a aba aea'

Írj olyan reguláris kifejezést, amely megtalálja a 'a.a' sztringet, anélkül, hogy a többit is kiválasztaná.

Adott a következő sztring:

txt = '2+3 223 2223'

Írj olyan reguláris kifejezést, amely megtalálja a '2+3' sztringet, anélkül, hogy a többit is kiválasztaná.

Adott a következő sztring:

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

Írj olyan reguláris kifejezést, amely megtalálja a '2+3', '2++3', '2+++3' sztringeket, anélkül, hogy a többit is kiválasztaná (a + bármennyi lehet).

Adott a következő sztring:

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

Írj olyan reguláris kifejezést, amely megtalálja a '23', '2+3', '2++3', '2+++3' sztringeket, anélkül, hogy a többit is kiválasztaná.

Adott a következő sztring:

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

Írj olyan reguláris kifejezést, amely megtalálja a '*q+', '*qq+', '*qqq+' sztringeket, anélkül, hogy a többit is kiválasztaná.

Adott a következő sztring:

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

Írj olyan reguláris kifejezést, amely megtalálja a szögletes zárójelek közé zárt sztringeket és '!'-ra cseréli őket.

Magyar
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
A weboldal működéséhez, elemzéshez és személyre szabáshoz sütiket használunk. Az adatfeldolgozás a Adatvédelmi irányelvek szerint történik.
összes elfogadása beállítás elutasítás