Herhalingsoperators voor karakters in regex
Er zijn situaties waarin u moet aangeven dat
een karakter een bepaald aantal keer
wordt herhaald. Als het exacte aantal herhalingen onbekend is,
kan u het gewoon meerdere keren
opschrijven - 'aaaa'. Maar wat te doen als u
het volgende moet zeggen: herhaal één of meer
keer?
Hiervoor bestaan herhalingsoperators (kwantificatoren):
plus + (één of meer
keer), asterisk * (nul of meer
keer) en vraagteken ? (nul of één keer).
Deze operators werken op het karakter
dat ervoor staat.
Laten we de werking van deze operators bekijken aan de hand van voorbeelden.
Voorbeeld
Laten we alle substrings vinden volgens het patroon letter
'x', letter 'a' één of meer
keer, letter 'x':
txt = 'xx xax xaax xaaax xbx'
res = re.sub('xa+x', '!', txt)
print(res)
Resultaat van de code-uitvoering:
'xx ! ! ! xbx'
Voorbeeld
Laten we alle substrings vinden volgens het patroon letter
'x', letter 'a' nul of meer
keer, letter 'x':
txt = 'xx xax xaax xaaax xbx'
res = re.sub('xa*x', '!', txt)
print(res)
Resultaat van de code-uitvoering:
'! ! ! ! xbx'
Voorbeeld
Laten we alle substrings vinden volgens het patroon letter
'x', letter 'a' nul of één
keer, letter 'x':
txt = 'xx xax xaax xbx'
res = re.sub('xa?x', '!', txt)
print(res)
Resultaat van de code-uitvoering:
'! ! xaax xbx'
Praktische opdrachten
Gegeven een string:
txt = 'aa aba abba abbba abca abea'
Schrijf een regex die de strings
'aba', 'abba', 'abbba'
vindt volgens het patroon: letter 'a', letter
'b' elk aantal keren, letter
'a'.
Gegeven een string:
txt = 'aa aba abba abbba abca abea'
Schrijf een regex die de strings
'aa', 'aba', 'abba',
'abbba' vindt volgens het patroon: letter
'a', letter 'b' elk aantal keren
(inclusief nul keer), letter
'a'.
Gegeven een string:
txt = 'aa aba abba abbba abca abea'
Schrijf een regex die de strings
'aa', 'aba' vindt volgens het patroon:
letter 'a', letter 'b' één
keer of geen, letter 'a'.
Gegeven een string:
txt = 'aa aba abba abbba abca abea'
Schrijf een regex die de strings
'aa', 'aba', 'abba',
'abbba' vindt, zonder 'abca'
en 'abea' te vangen.