Karakterstelle in Python se gereelde uitdrukkings
Karaktergroepe \d en \w is nie
baie buigsaam nie. Selfs so 'n eenvoudige taak
soos vind alle letters, maar nie syfers nie -
kan nie deur hulle opgelos word nie. Vir sulke take
moet jy vierkantige hakies gebruik,
wat die bewerking 'of' verteenwoordig.
Vierkantige hakies vervang een
karakter, enige van die wat binne-in gelys is. By
voorbeeld, soos volg: x[abc]x - ons
sê dat aan die kante moet die letters
x wees, en binne-in - een karakter: of 'a',
of 'b', of 'c'.
Na vierkantige hakies kan jy
herhalingsoperatore skryf. Byvoorbeeld, soos volg:
x[abc]+x - ons sê dat binne
die x'e enige hoeveelheid karakters
'a', 'b' en 'c' kan wees - in
enige kombinasies.
Jy kan nie net karakters lys nie, maar
ook karaktergroepe skep deur tussen
twee karakters 'n koppelteken te skryf. Byvoorbeeld, soos volg:
[a-d] - ons kry alle karakters van
'a' tot 'd'.
Kom ons kyk na voorbeelde.
Voorbeeld
In hierdie voorbeeld lyk die soekpatroon
soos volg: tussen x'e enige letter van
'a' tot 'z':
Resultaat van die kode-uitvoering:
'! ! ! x@x'
Voorbeeld
In hierdie voorbeeld lyk die soekpatroon
soos volg: tussen x'e enige letter van
'a' tot 'k':
txt = 'xax xbx xmx x@x'
res = re.sub('x[a-k]x', '!', txt)
print(res)
Resultaat van die kode-uitvoering:
'! ! xmx x@x'
Voorbeeld
In hierdie voorbeeld lyk die soekpatroon
soos volg: tussen x'e enige letter van
'A' tot 'Z':
txt = 'xax xBx xcx x@x'
res = re.sub('x[A-Z]x', '!', txt)
print(res)
Resultaat van die kode-uitvoering:
'xax ! xcx x@x'
Voorbeeld
In hierdie voorbeeld lyk die soekpatroon
soos volg: tussen x'e enige syfer van 0
tot 9:
txt = 'xax x1x x3x x5x x@x'
res = re.sub('x[0-9]x', '!', txt)
print(res)
Resultaat van die kode-uitvoering:
'xax ! ! ! x@x'
Voorbeeld
In hierdie voorbeeld lyk die soekpatroon
soos volg: tussen x'e enige syfer van 3
tot 7:
txt = 'xax x1x x3x x5x x@x'
res = re.sub('x[3-7]x', '!', txt)
print(res)
Resultaat van die kode-uitvoering:
'xax x1x ! ! x@x'
Voorbeeld
In hierdie voorbeeld lyk die soekpatroon
soos volg: tussen x'e enige letter van
'a' tot 'z' of syfer van
1 tot 9:
txt = 'xax x1x x3x x5x x@x'
res = re.sub('x[a-z1-9]x', '!', txt)
print(res)
Resultaat van die kode-uitvoering:
'! ! ! ! x@x'
Voorbeeld
In hierdie voorbeeld lyk die soekpatroon
soos volg: tussen x'e enige letter van
'a' tot 'z' of letter van
'A' tot 'Z':
txt = 'xax xBx xcx x5x x@x'
res = re.sub('x[a-zA-Z]x', '!', txt)
print(res)
Resultaat van die kode-uitvoering:
'! ! ! x5x x@x'
Voorbeeld
In hierdie voorbeeld lyk die soekpatroon
soos volg: tussen x'e enige letter van
'a' tot 'z' of syfers 1,
2:
txt = 'xax xbx x1x x2x x3x'
res = re.sub('x[a-z12]x', '!', txt)
print(res)
Resultaat van die kode-uitvoering:
'! ! ! ! x3x'
Voorbeeld
In hierdie voorbeeld lyk die soekpatroon
soos volg: tussen x'e letters van 'a'
tot 'z' in 'n hoeveelheid van 1 en
meer:
txt = 'xx xabesx xaadx x123x xa3x'
res = re.sub('x[a-z]+x', '!', txt)
print(res)
Resultaat van die kode-uitvoering:
'xx ! ! ! x123x xa3x'
Voorbeeld
Kom ons maak dit so dat die hoeveelheid letters selfs nul kan wees:
txt = 'xx xabesx xaadx x123x xa3x'
res = re.sub('x[a-z]*x', '!', txt)
print(res)
As gevolg daarvan sal ons kry:
'! ! ! ! x123x xa3x'
Voorbeeld
Binne vierkantige hakies kan jy ook ontsnapte karakters aandui. Kom ons vind die volgorde van letters en syfers, wat nul of meer keer herhaal word:
txt = 'xx x@x xadx xas12x xa3x'
res = re.sub('x[a-z\d]*x', '!', txt)
print(res)
Resultaat van die kode-uitvoering:
'! x@x ! ! !'
Voorbeeld
As ons nog 'n stel vierkantige hakies moet aandui, dan moet ons dit ook noodwendig ontsnap:
txt = 'xx xrx xas[]x x3x'
res = re.sub('x[a-z\[\]]*x', '!', txt)
print(res)
Resultaat van die kode-uitvoering:
'! ! ! x3x'
Praktiese Take
Gegee is die string:
txt = 'aba aea aca aza axa'
Skryf 'n gereelde uitdrukking wat volgens
die volgende patroon sal vind: aan die kante is die letters
'a', en tussen hulle - die letter 'b',
'e' of 'x'.
Gegee is die string:
txt = 'a1a a3a a7a a9a aba'
Skryf 'n gereelde uitdrukking wat volgens
die volgende patroon sal vind: aan die kante is die letters
'a', en tussen hulle - die syfer van
3 tot 6.
Gegee is die string:
txt = 'aba aea afa aha aga'
Skryf 'n gereelde uitdrukking wat volgens
die volgende patroon sal vind: aan die kante is die letters
'a', en tussen hulle - die letter van
'a' tot 'g'.
Gegee is die string:
txt = 'aba aea afa aha aga'
Skryf 'n gereelde uitdrukking wat volgens
die volgende patroon sal vind: aan die kante is die letters
'a', en tussen hulle - die letter van
'a' tot 'f' en van 'j'
tot 'z'.
Gegee is die string:
txt = 'aAa aea aEa aJa a3a'
Skryf 'n gereelde uitdrukking wat volgens
die volgende patroon sal vind: aan die kante is die letters
'a', en tussen hulle - die letter van
'a' tot 'f' en van 'A'
tot 'D'.
Gegee is die string:
txt = 'aAXa aeffa aGha aza ax23a a3sSa'
Skryf 'n gereelde uitdrukking wat volgens
die volgende patroon sal vind: aan die kante is die letters
'a', en tussen hulle - klein
Latynse letters, sonder om die ander te raak.
Gegee is die string:
txt = 'aAXa aeffa aGha aza ax23a a3sSa'
Skryf 'n gereelde uitdrukking wat volgens
die volgende patroon sal vind: aan die kante is die letters
'a', en tussen hulle - klein en
groot Latynse letters, sonder om die ander te raak.
Gegee is die string:
txt = 'aAXa aeffa aGha aza ax23a a3sSa'
Skryf 'n gereelde uitdrukking wat volgens
die volgende patroon sal vind: aan die kante is die letters
'a', en tussen hulle - klein
Latynse letters en syfers, sonder om die ander te raak.