Karaktergroepe in Python se regulêre uitdrukkings
Daar is spesiale opdragte wat dit moontlik maak om
heel groepe karakters gelyktydig te kies. Die opdrag \d beteken 'n syfer
van 0 tot 9. Die opdrag \w
verteenwoordig 'n syfer, 'n Latynse letter of 'n onderstreep-karakter.
Die opdrag \s verteenwoordig
'n spasie of 'n spasiekarakter: spasie,
reëlomskakeling, tab. Jy kan die waarde van die opdrag omkeer
deur 'n hoofletter te gebruik:
bv., as \d 'n syfer is, dan is
\D nie 'n syfer nie.
Voorbeeld
Laat ons alle syfers vind:
txt = '1 12 123'
res = re.sub('\d', '!', txt)
print(res)
Resultaat van die kode-uitvoering:
'! !! !!!'
Voorbeeld
Herhalingsoperatore beskou die groepsopdragte as
een geheel, wat beteken groeperingshakies
is nie nodig nie. In die volgende voorbeeld lyk die soekpatroon
so: syfer van 0 tot
9 een of meer keer:
txt = '1 12 123 abc @@@'
res = re.sub('\d+', '!', txt)
print(res)
Resultaat van die kode-uitvoering:
'! ! ! abc @@@'
Voorbeeld
In die volgende voorbeeld lyk die soekpatroon
so: enigiets een of meer keer,
maar nie 'n syfer van 0 tot 9 nie:
txt = '123abc3@@'
res = re.sub('\D+', '!', txt)
print(res)
Resultaat van die kode-uitvoering:
'123!3!'
Voorbeeld
In hierdie voorbeeld lyk die soekpatroon so: spasiekarakter een keer:
txt = '1 12 123 abc @@@'
res = re.sub('\s', '!', txt)
print(res)
Resultaat van die kode-uitvoering:
'1!12!123!abc!@@@'
Voorbeeld
In hierdie voorbeeld lyk die soekpatroon
so: NIE 'n spasiekarakter een of meer
keer. Alle substrings, geskei deur
spasies, sal vervang word met '!':
txt = '1 12 123 abc @@@'
res = re.sub('\S+', '!', txt)
print(res)
Resultaat van die kode-uitvoering:
'! ! ! ! !'
Voorbeeld
In hierdie voorbeeld lyk die soekpatroon
so: syfer of letter een of meer
keer. Alle substrings wat uit syfers
en letters bestaan, sal vervang word met '!':
txt = '1 12 123a Abc @@@'
res = re.sub('\w+', '!', txt)
print(res)
Resultaat van die kode-uitvoering:
'! ! ! ! @@@'
Voorbeeld
In hierdie voorbeeld lyk die soekpatroon
so: NIE 'n syfer en NIE 'n letter een of meer
keer. Aan hierdie definisie voldoen in ons
geval '@@@' en alle spasies
(hulle is immers ook nie syfers of letters nie).
Let daarop dat aan die einde een
'!' is - daarin is die string
' @@@' omskep - met 'n spasie vooraan:
txt = '1 12 123 Abc @@@'
res = re.sub('\W+', '!', txt)
print(res)
Resultaat van die kode-uitvoering:
'1!12!123!Abc!'
Praktiese take
Gegee 'n string:
txt = 'a1a a2a a3a a4a a5a aba aca'
Skryf 'n regulêre uitdrukking wat die strings sal vind,
waarin aan die kante die letters 'a' staan,
en tussen hulle een syfer.
Gegee 'n string:
txt = 'a1a a22a a333a a4444a a55555a aba aca'
Skryf 'n regulêre uitdrukking wat die strings sal vind,
waarin aan die kante die letters 'a' staan,
en tussen hulle enige hoeveelheid syfers.
Gegee 'n string:
txt = 'aa a1a a22a a333a a4444a a55555a aba aca'
Skryf 'n regulêre uitdrukking wat die strings sal vind,
waarin aan die kante die letters 'a' staan,
en tussen hulle enige hoeveelheid syfers (insluitend
geen syfers nie, dit wil sê die string
'aa').
Gegee 'n string:
txt = 'avb a1b a2b a3b a4b a5b abb acb'
Skryf 'n regulêre uitdrukking wat die strings
van die volgende vorm sal vind: aan die kante staan die letters
'a' en 'b', en tussen hulle -
nie 'n getal en nie 'n spasie.
Gegee 'n string:
txt = 'ave a#b a2b a$b a4b a5b a-b acb'
Skryf 'n regulêre uitdrukking wat die strings
van die volgende vorm sal vind: aan die kante staan die letters
'a' en 'b', en tussen hulle -
nie 'n letter, nie 'n syfer en nie 'n spasie.
Gegee 'n string:
txt = 'ave a#a a2a a$a a4a a5a a-a aca'
Skryf 'n regulêre uitdrukking wat alle
spasies sal vervang met '!'.