Tegn-gentagelsesoperatorer i regulære udtryk
Der er situationer, hvor du skal angive, at
et tegn gentages et bestemt antal
gange. Hvis det nøjagtige antal gentagelser er ukendt,
kan du blot skrive det flere gange
- 'aaaa'. Men hvad gør du, hvis du skal
sige sådan her: gentag en eller flere
gange?
For dette findes der gentagelsesoperatorer (kvantifikatorer):
plus + (en eller flere
gange), stjerne * (nul eller flere
gange) og spørgsmålstegn ? (nul eller en gang).
Disse operatorer virker på det tegn,
der står foran dem.
Lad os se på, hvordan disse operatorer fungerer med eksempler.
Eksempel
Lad os finde alle delstrenge efter mønsteret bogstav
'x', bogstav 'a' en eller flere
gange, bogstav 'x':
txt = 'xx xax xaax xaaax xbx'
res = re.sub('xa+x', '!', txt)
print(res)
Resultatet af kodeudførelsen:
'xx ! ! ! xbx'
Eksempel
Lad os finde alle delstrenge efter mønsteret bogstav
'x', bogstav 'a' nul eller flere
gange, bogstav 'x':
txt = 'xx xax xaax xaaax xbx'
res = re.sub('xa*x', '!', txt)
print(res)
Resultatet af kodeudførelsen:
'! ! ! ! xbx'
Eksempel
Lad os finde alle delstrenge efter mønsteret bogstav
'x', bogstav 'a' nul eller en
gang, bogstav 'x':
txt = 'xx xax xaax xbx'
res = re.sub('xa?x', '!', txt)
print(res)
Resultatet af kodeudførelsen:
'! ! xaax xbx'
Praktiske opgaver
Givet en streng:
txt = 'aa aba abba abbba abca abea'
Skriv et regulært udtryk, der finder strengene
'aba', 'abba', 'abbba'
efter mønsteret: bogstav 'a', bogstav
'b' et hvilket som helst antal gange, bogstav
'a'.
Givet en streng:
txt = 'aa aba abba abbba abca abea'
Skriv et regulært udtryk, der finder strengene
'aa', 'aba', 'abba',
'abbba' efter mønsteret: bogstav
'a', bogstav 'b' et hvilket som helst antal gange
(inklusive nul gange), bogstav
'a'.
Givet en streng:
txt = 'aa aba abba abbba abca abea'
Skriv et regulært udtryk, der finder strengene
'aa', 'aba' efter mønsteret:
bogstav 'a', bogstav 'b' en
gang eller ingen, bogstav 'a'.
Givet en streng:
txt = 'aa aba abba abbba abca abea'
Skriv et regulært udtryk, der finder strengene
'aa', 'aba', 'abba',
'abbba', uden at fange 'abca'
og 'abea'.