Si la cadena es I am Fine
que me está dando salida como I
.
import re
string='hello I am Fine'
print(re.search(r'[A-Z]?',string).group())
Si la cadena es I am Fine
que me está dando salida como I
.
import re
string='hello I am Fine'
print(re.search(r'[A-Z]?',string).group())
Las ?
especifica que pueden o no pueden existir carácter o la clase anterior. Cuando re.search
se inicia la búsqueda de la cadena, no encuentra que la clase al principio de la cadena ... y que es una coincidencia aceptable debido a la ?
. Simplemente se está volviendo la cadena vacía.
>>> re.search(r'[A-Z]?', 'hello I am Fine').group()
''
Si desea que se encuentre la primera letra mayúscula, no use un ?
:
>>> re.search(r'[A-Z]', 'hello I am Fine').group()
'I'
Se puede utilizar el findall método.
A partir de documentación de Python , sección 7.2.5.6
,
findall() matches all occurrences of a pattern, not just the first one as search() does.
En tu caso,
>>> re.findall(r'[A-Z]',"hello I am Fine")
['I', 'F']