⊗pyPmREESCh 36 of 129 menu

Afskerming van spesiale karakters in Python regex

Gestel jy moet maak dat 'n spesiale karakter homself verteenwoordig. Om dit te doen moet dit afgeskerm word met 'n agteroorskuins streep. Kom ons kyk na voorbeelde.

Voorbeeld

In die volgende voorbeeld wou die skrywer van die regex, dat die soekpatroon so moes lyk: letter 'a', dan plus '+', dan letter 'x'. Die skrywer van die kode het egter nie die simbool '+' afgeskerm nie en daarom lyk die soekpatroon in werklikheid so: letter 'a' een of meer keer, dan letter 'x':

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

Resultaat van die kode uitvoer:

'a+x ! ! !'

Voorbeeld

En nou het die skrywer die plus met 'n agteroorskuins streep afgeskerm. Nou lyk die soekpatroon soos dit moet: letter 'a', dan plus '+', dan letter 'x':

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

Resultaat van die kode uitvoer:

'! ax aax aaax'

Voorbeeld

In hierdie voorbeeld lyk die patroon so: letter 'a', dan punt '.', dan letter 'x':

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

Resultaat van die kode uitvoer:

'! abx azx'

Voorbeeld

In die volgende voorbeeld het die skrywer vergeet om die punt af te skerm en het die regex alle substringe gevang, want 'n onaangeskermde punt verteenwoordig enige karakter:

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

Resultaat van die kode uitvoer:

'! ! !'

Opmerking

Let daarop dat as jy die agteroorskuins streep vir die punt vergeet (wanneer dit homself moet verteenwoordig) - kan 'n mens dit dalk selfs nie raaksien nie:

res = re.sub('a.x', '!', 'a.x') print(res) # gee '!', soos ons wou

Visueel werk dit reg (want die punt verteenwoordig enige karakter, insluitend 'n gewone punt '.'). Maar as ons die teks waar vervangings plaasvind verander - sien ons ons fout:

res = re.sub('a.x', '!', 'a.x abx azx') print(res) # gee '! ! !', maar verwag was '! abx azx'

Lys van spesiale karakters en gewone karakters

As jy 'n gewone karakter afskerm - gebeur daar niks ernstigs nie - dit sal nogtans homself verteenwoordig. Uitsondering - syfers, hulle kan nie afgeskerm word nie.

Dikwels ontstaan daar twyfel of 'n gegewe simbool spesiaal is. Sommige kom daartoe dat hulle alle verdagte simbolle opeenvolgend afskerm. Dit is eger slegte praktyk (maak die regex vuil met agteroorskuins strepe).

Is spesiale karakters: $ ^ . * + ? \ / {} [] () |

Is nie spesiale karakters nie: @ : , ' " - _ = < > % # ~ `& !

Praktiese take

Gegewe teks:

txt = 'a.a aba aea'

Skryf 'n regex wat die teks 'a.a' sal vind, sonder om die ander te vang.

Gegewe teks:

txt = '2+3 223 2223'

Skryf 'n regex wat die teks '2+3' sal vind, sonder om die ander te vang.

Gegewe teks:

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

Skryf 'n regex wat die tekste '2+3', '2++3', '2+++3', sal vind, sonder om die ander te vang (+ kan enige hoeveelheid wees).

Gegewe teks:

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

Skryf 'n regex wat die tekste '23', '2+3', '2++3', '2+++3' sal vind, sonder om die ander te vang.

Gegewe teks:

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

Skryf 'n regex wat die tekste '*q+', '*qq+', '*qqq+', sal vind, sonder om die ander te vang.

Gegewe teks:

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

Skryf 'n regex wat die tekste in vierkantige hakies sal vind en hulle vervang met '!'.

Afrikaans
AzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ons gebruik koekies vir die werking van die webwerf, ontleding en personalisering. Die verwerking van data geskied volgens die Privaatheidsbeleid.
aanvaar alles instel verwerp