Teckenupprepningsoperatorer i reguljära uttryck
Det finns situationer när man behöver ange att
ett tecken upprepas ett visst antal
gånger. Om det exakta antalet upprepningar är okänt,
kan man helt enkelt skriva det flera gånger
- 'aaaa'. Men vad gör man om man behöver
säga så här: upprepa en eller flera
gånger?
För detta finns operatorer (kvantifierare)
för upprepning: plus + (en eller flera
gånger), asterisk * (noll eller flera
gånger) och frågetecken ? (noll eller en gång).
Dessa operatorer verkar på det tecken
som står före dem.
Låt oss titta på hur dessa operatorer fungerar med exempel.
Exempel
Låt oss hitta alla delsträngar enligt mönstret bokstaven
'x', bokstaven 'a' en eller flera
gånger, bokstaven 'x':
txt = 'xx xax xaax xaaax xbx'
res = re.sub('xa+x', '!', txt)
print(res)
Resultat av kodkörning:
'xx ! ! ! xbx'
Exempel
Låt oss hitta alla delsträngar enligt mönstret bokstaven
'x', bokstaven 'a' noll eller flera
gånger, bokstaven 'x':
txt = 'xx xax xaax xaaax xbx'
res = re.sub('xa*x', '!', txt)
print(res)
Resultat av kodkörning:
'! ! ! ! xbx'
Exempel
Låt oss hitta alla delsträngar enligt mönstret bokstaven
'x', bokstaven 'a' noll eller en
gång, bokstaven 'x':
txt = 'xx xax xaax xbx'
res = re.sub('xa?x', '!', txt)
print(res)
Resultat av kodkörning:
'! ! xaax xbx'
Praktiska uppgifter
Given en sträng:
txt = 'aa aba abba abbba abca abea'
Skriv ett reguljärt uttryck som hittar strängarna
'aba', 'abba', 'abbba'
enligt mönstret: bokstaven 'a', bokstaven
'b' valfritt antal gånger, bokstaven
'a'.
Given en sträng:
txt = 'aa aba abba abbba abca abea'
Skriv ett reguljärt uttryck som hittar strängarna
'aa', 'aba', 'abba',
'abbba' enligt mönstret: bokstaven
'a', bokstaven 'b' valfritt antal gånger
(inklusive noll gånger), bokstaven
'a'.
Given en sträng:
txt = 'aa aba abba abbba abca abea'
Skriv ett reguljärt uttryck som hittar strängarna
'aa', 'aba' enligt mönstret:
bokstaven 'a', bokstaven 'b' en
gång eller ingång, bokstaven 'a'.
Given en sträng:
txt = 'aa aba abba abbba abca abea'
Skriv ett reguljärt uttryck som hittar strängarna
'aa', 'aba', 'abba',
'abbba', utan att fånga 'abca'
och 'abea'.