Tegngrupper i Pythons regulære udtryk

Der findes specielle kommandoer, der tillader at vælge hele grupper af tegn på én gang. Kommandoen \d betyder et ciffer fra 0 til 9. Kommandoen \w betyder et ciffer, et latinsk bogstav eller underscore-tegnet. Kommandoen \s betyder mellemrum eller et blankt tegn: mellemrum, linjeskift, tabulator. Det er muligt at invertere kommandoens betydning ved at skrive et stort bogstav: for eksempel, hvis \d er et ciffer, så er \D ikke et ciffer.

Eksempel

Lad os finde alle cifre:

pythontxt = '1 12 123'
res = re.sub('\d', '!', txt)

print(res)

Resultat af kodeudførelse:

python'! !! !!!'

Eksempel

Gentagelsesoperatorer betragter kommando-grupper som en helhed, det vil sige, at grupperingsparenteser ikke er nødvendige. I det følgende eksempel ser søgemønsteret sådan ud: ciffer fra 0 til 9 én eller flere gange:

pythontxt = '1 12 123 abc @@@'
res = re.sub('\d+', '!', txt)

print(res)

Resultat af kodeudførelse:

python'! ! ! abc @@@'

Eksempel

I det følgende eksempel ser søgemønsteret sådan ud: hvad som helst én eller flere gange, men ikke et ciffer fra 0 til 9:

pythontxt = '123abc3@@'
res = re.sub('\D+', '!', txt)

print(res)

Resultat af kodeudførelse:

python'123!3!'

Eksempel

I dette eksempel ser søgemønsteret sådan ud: blankt tegn én gang:

pythontxt = '1 12 123 abc @@@'
res = re.sub('\s', '!', txt)

print(res)

Resultat af kodeudførelse:

python'1!12!123!abc!@@@'

Eksempel

I dette eksempel ser søgemønsteret sådan ud: IKKE blankt tegn én eller flere gange. Alle understrenge, adskilt af mellemrum, vil blive erstattet med '!':

pythontxt = '1 12 123 abc @@@'
res = re.sub('\S+', '!', txt)

print(res)

Resultat af kodeudførelse:

python'! ! ! ! !'

Eksempel

I dette eksempel ser søgemønsteret sådan ud: ciffer eller bogstav én eller flere gange. Alle understrenge, der består af cifre og bogstaver, vil blive erstattet med '!':

pythontxt = '1 12 123a Abc @@@'
res = re.sub('\w+', '!', txt)

print(res)

Resultat af kodeudførelse:

python'! ! ! ! @@@'

Eksempel

I dette eksempel ser søgemønsteret sådan ud: IKKE ciffer og IKKE bogstav én eller flere gange. I vores tilfælde opfylder '@@@' og alle mellemrum (de er jo heller ikke cifre eller bogstaver) denne definition. Læg mærke til, at der i slutningen er én '!' - den blev til fra strengen ' @@@' - med et mellemrum foran:

pythontxt = '1 12 123 Abc @@@'
res = re.sub('\W+', '!', txt)

print(res)

Resultat af kodeudførelse:

python'1!12!123!Abc!'

Praktiske opgaver

Задание 1

Givet en streng:

pythontxt = 'a1a a2a a3a a4a a5a aba aca'

Skriv et regulært udtryk, der finder strenge, hvor der står bogstaver 'a' i kanterne, og imellem dem er der ét ciffer.

Задание 2

Givet en streng:

pythontxt = 'a1a a22a a333a a4444a a55555a aba aca'

Skriv et regulært udtryk, der finder strenge, hvor der står bogstaver 'a' i kanterne, og imellem dem er der et hvilket som helst antal cifre.

Задание 3

Givet en streng:

pythontxt = 'aa a1a a22a a333a a4444a a55555a aba aca'

Skriv et regulært udtryk, der finder strenge, hvor der står bogstaver 'a' i kanterne, og imellem dem er der et hvilket som helst antal cifre (herunder også nul cifre, det vil sige strengen 'aa').

Задание 4

Givet en streng:

pythontxt = 'avb a1b a2b a3b a4b a5b abb acb'

Skriv et regulært udtryk, der finder strenge af følgende type: der står bogstaver 'a' og 'b' i kanterne, og imellem dem - ikke et tal og ikke et mellemrum.

Задание 5

Givet en streng:

pythontxt = 'ave a#b a2b a$b a4b a5b a-b acb'

Skriv et regulært udtryk, der finder strenge af følgende type: der står bogstaver 'a' og 'b' i kanterne, og imellem dem - ikke et bogstav, ikke et ciffer og ikke et mellemrum.

Задание 6

Givet en streng:

pythontxt = 'ave a#a a2a a$a a4a a5a a-a aca'

Skriv et regulært udtryk, der erstatter alle mellemrum med '!'.