De 'of'-opdracht in reguliere expressies van Python
De opdracht '|', die een
krachtigere variant van 'of'
vertegenwoordigt in vergelijking met de opdracht [ ]. Deze opdracht
maakt het mogelijk om de reguliere expressie in meerdere
delen te splitsen. Hierbij kan het gezochte
ofwel onder het ene deel van de reguliere expressie vallen, ofwel onder
het andere. Laten we naar voorbeelden kijken.
Voorbeeld
In dit voorbeeld is het zoekpatroon als volgt:
drie letters 'a' of drie letters
'b':
txt = 'aaa bbb abb'
res = re.sub('a{3}|b{3}', '!', txt)
print(res)
Resultaat van de code-uitvoering:
'! ! abb'
Voorbeeld
In dit voorbeeld is het zoekpatroon als volgt:
drie letters 'a' of van 1 of
meer letters 'b':
txt = 'aaa bbb bbbb bbbbb axx'
res = re.sub('a{3}|b+', '!', txt)
print(res)
Resultaat van de code-uitvoering:
'! ! ! ! axx'
Voorbeeld
In dit voorbeeld is het zoekpatroon als volgt: een of meer letters of drie cijfers:
txt = 'a ab abc 1 12 123'
res = re.sub('[a-z]+|\d{3}', '!', txt)
print(res)
Resultaat van de code-uitvoering:
'! ! ! 1 12 !'
Voorbeeld
De verticale streep kan de reguliere expressie niet alleen in twee delen verdelen, maar in elk willekeurig aantal delen:
txt = 'aaa bbb ccc ddd'
res = re.sub('a+|b+|c+', '!', txt)
print(res)
Resultaat van de code-uitvoering:
'! ! ! ddd'
Voorbeeld
Als de verticale streep binnen ronde
haakjes staat, dan werkt 'of' alleen
binnen die haakjes.
Laten we als voorbeeld strings vinden volgens
het volgende patroon: aan het begin staat ofwel
'a', ofwel 'b' een of meer
keer, en daarna twee letters 'x':
txt = 'axx bxx bbxx exx'
res = re.sub('(a|b+)xx', '!', txt)
print(res)
Resultaat van de code-uitvoering:
'! ! ! exx'
Praktische opdrachten
Gegeven een string:
txt = 'aeeea aeea aea axa axxa axxxa'
Schrijf een reguliere expressie die strings vindt
volgens het patroon: aan de randen staan letters
'a', en daartussen - ofwel de letter
'e' een willekeurig aantal keren of de letter
'x' een willekeurig aantal keren.
Gegeven een string:
txt = 'aeeea aeea aea axa axxa axxxa'
Schrijf een reguliere expressie die strings vindt
volgens het patroon: aan de randen staan letters
'a', en daartussen - ofwel de letter
'e' twee keer of de letter 'x'
een willekeurig aantal keren.