Krulhaken in reguliere expressies van Python
Operatoren '+', '*', '?'
zijn goed, maar het is niet mogelijk om
een specifiek aantal herhalingen op te geven.
In dat geval komt de operator {}
van pas.
Het werkt als volgt: {5}
- vijf herhalingen, {2,5} – herhaalt
van twee tot vijf (beide inclusief), {2,}
- herhaalt twee keer of vaker. Bekijk de
voorbeelden:
Voorbeeld
In dit voorbeeld ziet het zoekpatroon er
als volgt uit: letter 'x', letter 'a'
een of twee keer, letter 'x':
txt = 'xx xax xaax xaaax'
res = re.sub('xa{1,2}x', '!', txt)
print(res)
Resultaat van de code-uitvoering:
'xx ! ! xaaax'
Voorbeeld
In dit voorbeeld ziet het zoekpatroon er
als volgt uit: letter 'x', letter 'a'
twee keer of vaker, letter 'x':
txt = 'xx xax xaax xaaax'
res = re.sub('xa{2,}x', '!', txt)
print(res)
Resultaat van de code-uitvoering:
'xx xax ! !'
Voorbeeld
In dit voorbeeld ziet het zoekpatroon er
als volgt uit: letter 'x', letter 'a'
drie keer, letter 'x':
txt = 'xx xax xaax xaaax'
res = re.sub('xa{3}x', '!', txt)
print(res)
Resultaat van de code-uitvoering:
'xx xax xaax !'
Voorbeeld
In dit voorbeeld ziet het zoekpatroon er
als volgt uit: letter 'a' tien keer:
txt = 'aaa aaaaaaaaaa aaa'
res = re.sub('a{10}', '!', txt)
print(res)
Resultaat van de code-uitvoering:
'aaa ! aaa'
Voorbeeld
In dit voorbeeld is er een patroon: letter
'x', letter 'a' drie keer of
minder, letter 'x'. Om dit te
realiseren, kun je voor het cijfer 3
geen getal specificeren, maar gewoon een
komma zetten:
txt = 'xx xax xaax xaaax'
res = re.sub('xa{,3}x', '!', txt)
print(res)
Resultaat van de code-uitvoering:
'! ! ! !'
Voorbeeld
Nul voor 3 is ook toegestaan:
txt = 'xx xax xaax xaaax'
res = re.sub('xa{0,3}x', '!', txt)
print(res)
Resultaat van de code-uitvoering:
'! ! ! !'
Praktische taken
Gegeven een string:
txt = 'aa aba abba abbba abbbba abbbbba'
Schrijf een reguliere expressie die de strings
'abba', 'abbba', 'abbbba'
en alleen deze vindt.
Gegeven een string:
txt = 'aa aba abba abbba abbbba abbbbba'
Schrijf een reguliere expressie die strings
van het type 'aba' vindt, waarin 'b'
minder dan 3 keer voorkomt (inclusief).
Gegeven een string:
txt = 'aa aba abba abbba abbbba abbbbba'
Schrijf een reguliere expressie die strings
van het type 'aba' vindt, waarin 'b'
meer dan 4 keer voorkomt (inclusief).