Vanlig uttrykk i Python 3.0 ikke samsvarer

stemmer
47

Hvis strengen er I am Finedet gir meg ut som I.

import re
string='hello I am Fine'
print(re.search(r'[A-Z]?',string).group())
Publisert på 28/12/2016 klokken 03:09
bruker
På andre språk...                            


2 svar

stemmer
0

De ?angir at det foregående tegn eller klasse kan eller ikke kan forekomme. Når re.searchbegynner å søke strengen, betyr det ikke at klassen i begynnelsen av strengen ... og det er en akseptabel kamp på grunn av ?. Det er ganske enkelt å returnere tom streng.

>>> re.search(r'[A-Z]?', 'hello I am Fine').group()
''

Hvis du vil at den skal finne den første bokstav, ikke bruk en ?:

>>> re.search(r'[A-Z]', 'hello I am Fine').group()
'I'
Svarte 28/12/2016 kl. 03:21
kilden bruker

stemmer
1

Du kan bruke findall metoden.

Fra Python docs , seksjon 7.2.5.6,

findall() matches all occurrences of a pattern, not just the first one as search() does.

I ditt tilfelle,

 >>> re.findall(r'[A-Z]',"hello I am Fine")
     ['I', 'F']
Svarte 28/12/2016 kl. 04:31
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more