Cirkumflex-tecknet inuti mängder i Python regex
Som ni vet skapar cirkumflex inuti [ ]
en negation när den skrivs i början av
hakparenteserna. Det betyder att den är ett
specialsymbol inuti dessa parenteser. För att
få cirkumflex som ett vanligt tecken måste man
antingen escape:a den eller flytta den från första
platsen.
Exempel
I följande exempel är sökmönstret så här:
det första tecknet är allt utom 'd',
sedan två bokstäver 'x':
txt = 'axx bxx ^xx dxx'
res = re.sub('[^d]xx', '!', txt)
print(res)
Som ett resultat kommer följande att skrivas till variabeln:
'! ! ! dxx'
Exempel
Och nu är sökmönstret så här: det första
tecknet är 'd' eller '^',
sedan två bokstäver 'x':
txt = 'axx bxx ^xx dxx'
res = re.sub('[d^]xx', '!', txt)
print(res)
Som ett resultat kommer följande att skrivas till variabeln:
'axx bxx ! !'
Exempel
Man behöver inte flytta cirkumflex från första platsen, utan kan bara escape:a den med ett omvänt snedstreck, så kommer den att representera sig själv:
txt = 'axx bxx ^xx dxx'
res = re.sub('[\^d]xx', '!', txt)
print(res)
Som ett resultat kommer följande att skrivas till variabeln:
'axx bxx ! !'
Praktiska uppgifter
Given en sträng:
txt = '^xx axx ^zz bkk @ss'
Skriv ett reguljärt uttryck som hittar strängar enligt mönstret: cirkumflex eller snabel-a, och sedan två latinska bokstäver.
Given en sträng:
txt = '^xx axx ^zz bkk @ss'
Skriv ett reguljärt uttryck som hittar strängar enligt mönstret: INTE cirkumflex och inte snabel-a, och sedan två latinska bokstäver.
Given en sträng:
txt = '^xx axx ^zz bkk'
Skriv ett reguljärt uttryck som hittar strängar enligt mönstret: inte cirkumflex och inte mellanslag, och sedan två latinska bokstäver.