Die 'of' opdrag in Python se gereelde uitdrukkings
Die opdrag '|', wat 'n
kragtiger weergawe van 'of'
verteenwoordig in vergelyking met die opdrag [ ]. Hierdie opdrag
laat toe dat die gereelde uitdrukking in verskeie
dele verdeel word. Die gesoekte patroon
kan óf onder die een deel van die gereelde uitdrukking val, óf onder die
ander. Kom ons kyk na voorbeelde.
Voorbeeld
In hierdie voorbeeld is die soekpatroon soos volg:
drie letters 'a' of drie letters
'b':
txt = 'aaa bbb abb'
res = re.sub('a{3}|b{3}', '!', txt)
print(res)
Die resultaat van die kode-uitvoering:
'! ! abb'
Voorbeeld
In hierdie voorbeeld is die soekpatroon soos volg:
drie letters 'a' of vanaf 1 of
meer letters 'b':
txt = 'aaa bbb bbbb bbbbb axx'
res = re.sub('a{3}|b+', '!', txt)
print(res)
Die resultaat van die kode-uitvoering:
'! ! ! ! axx'
Voorbeeld
In hierdie voorbeeld is die soekpatroon soos volg: een of meer letters of drie syfers:
txt = 'a ab abc 1 12 123'
res = re.sub('[a-z]+|\d{3}', '!', txt)
print(res)
Die resultaat van die kode-uitvoering:
'! ! ! 1 12 !'
Voorbeeld
Die vertikale streep kan die gereelde uitdrukking nie net in twee dele verdeel nie, maar in enige aantal dele:
txt = 'aaa bbb ccc ddd'
res = re.sub('a+|b+|c+', '!', txt)
print(res)
Die resultaat van die kode-uitvoering:
'! ! ! ddd'
Voorbeeld
As die vertikale streep binne ronde hakies
verskyn, werk die 'of' slegs
binne daardie hakies.
As voorbeeld, kom ons vind snare volgens
die volgende patroon: aan die begin is óf
'a', óf 'b' een of meer
keer, en dan twee letters 'x':
txt = 'axx bxx bbxx exx'
res = re.sub('(a|b+)xx', '!', txt)
print(res)
Die resultaat van die kode-uitvoering:
'! ! ! exx'
Praktiese probleme
Gegee 'n string:
txt = 'aeeea aeea aea axa axxa axxxa'
Skryf 'n gereelde uitdrukking wat snare sal vind
volgens die patroon: aan die kante is daar letters
'a', en tussen hulle - óf die letter
'e' enige aantal kere óf die letter
'x' enige aantal kere.
Gegee 'n string:
txt = 'aeeea aeea aea axa axxa axxxa'
Skryf 'n gereelde uitdrukking wat snare sal vind
volgens die patroon: aan die kante is daar letters
'a', en tussen hulle - óf die letter
'e' twee keer óf die letter 'x'
enige aantal kere.