Hvis strengen er I am Fine
det gir meg ut som I
.
import re
string='hello I am Fine'
print(re.search(r'[A-Z]?',string).group())
Hvis strengen er I am Fine
det gir meg ut som I
.
import re
string='hello I am Fine'
print(re.search(r'[A-Z]?',string).group())
De ?
angir at det foregående tegn eller klasse kan eller ikke kan forekomme. Når re.search
begynner å 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'
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']