Kommandot 'eller' i reguljära uttryck i Python
Kommandot '|', som representerar
ett kraftfullare alternativ för 'eller'
jämfört med kommandot [ ]. Detta kommando
möjliggör att dela upp det reguljära uttrycket i flera
delar. Det sökta kan då matcha
antingen en del av uttrycket eller en
annan del. Låt oss titta på exempel.
Exempel
I detta exempel är sökmönstret så här:
tre bokstäver 'a' eller tre bokstäver
'b':
txt = 'aaa bbb abb'
res = re.sub('a{3}|b{3}', '!', txt)
print(res)
Resultat av kodkörning:
'! ! abb'
Exempel
I detta exempel är sökmönstret så här:
tre bokstäver 'a' eller från 1 och
fler bokstäver 'b':
txt = 'aaa bbb bbbb bbbbb axx'
res = re.sub('a{3}|b+', '!', txt)
print(res)
Resultat av kodkörning:
'! ! ! ! axx'
Exempel
I detta exempel är sökmönstret så här: en eller fler bokstäver eller tre siffror:
txt = 'a ab abc 1 12 123'
res = re.sub('[a-z]+|\d{3}', '!', txt)
print(res)
Resultat av kodkörning:
'! ! ! 1 12 !'
Exempel
Det vertikala strecket kan dela upp det reguljära uttrycket i inte bara två delar, utan i valfritt antal delar:
txt = 'aaa bbb ccc ddd'
res = re.sub('a+|b+|c+', '!', txt)
print(res)
Resultat av kodkörning:
'! ! ! ddd'
Exempel
Om det vertikala strecket står inom runda
parenteser, så fungerar 'eller' endast
inuti dessa parenteser.
Låt oss som exempel hitta strängar enligt
följande mönster: i början står antingen
'a', eller 'b' en eller fler
gånger, och sedan två bokstäver 'x':
txt = 'axx bxx bbxx exx'
res = re.sub('(a|b+)xx', '!', txt)
print(res)
Resultat av kodkörning:
'! ! ! exx'
Praktiska uppgifter
Given en sträng:
txt = 'aeeea aeea aea axa axxa axxxa'
Skriv ett reguljärt uttryck som hittar strängar
enligt mönstret: vid kanterna står bokstäverna
'a', och mellan dem - antingen bokstaven
'e' valfritt antal gånger eller bokstaven
'x' valfritt antal gånger.
Given en sträng:
txt = 'aeeea aeea aea axa axxa axxxa'
Skriv ett reguljärt uttryck som hittar strängar
enligt mönstret: vid kanterna står bokstäverna
'a', och mellan dem - antingen bokstaven
'e' två gånger eller bokstaven 'x'
valfritt antal gånger.