Se a string é I am Fine
ele está me dando saída como I
.
import re
string='hello I am Fine'
print(re.search(r'[A-Z]?',string).group())
Se a string é I am Fine
ele está me dando saída como I
.
import re
string='hello I am Fine'
print(re.search(r'[A-Z]?',string).group())
Os ?
especifica que o carácter anterior ou classe pode ou não existir. Quando re.search
começa a procurar a corda, ele não encontrar essa classe no início da cadeia ... e que é uma correspondência aceitável por causa da ?
. É simplesmente devolver a cadeia vazia.
>>> re.search(r'[A-Z]?', 'hello I am Fine').group()
''
Se você quer que ele encontrar a primeira letra maiúscula, não use um ?
:
>>> re.search(r'[A-Z]', 'hello I am Fine').group()
'I'
Você pode usar o findall método.
De docs Python , seção 7.2.5.6
,
findall() matches all occurrences of a pattern, not just the first one as search() does.
No seu caso,
>>> re.findall(r'[A-Z]',"hello I am Fine")
['I', 'F']