Expresiones regulares en Python 3.0 que no coincida

votos
47

Si la cadena es I am Fineque me está dando salida como I.

import re
string='hello I am Fine'
print(re.search(r'[A-Z]?',string).group())
Publicado el 28/12/2016 a las 00:09
por usuario
En otros idiomas...                            


2 respuestas

votos
0

Las ?especifica que pueden o no pueden existir carácter o la clase anterior. Cuando re.searchse 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'
Respondida el 28/12/2016 a las 00:21
fuente por usuario

votos
1

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']
Respondida el 28/12/2016 a las 01:31
fuente por usuario

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