Se la stringa è I am Fine
che mi sta dando uscita come I
.
import re
string='hello I am Fine'
print(re.search(r'[A-Z]?',string).group())
Se la stringa è I am Fine
che mi sta dando uscita come I
.
import re
string='hello I am Fine'
print(re.search(r'[A-Z]?',string).group())
I ?
specifica che il carattere precedente o classe possono o non possono esistere. Quando re.search
inizia a cercare la stringa, non trova quella classe all'inizio della stringa ... e che è una corrispondenza accettabile, a causa della ?
. È semplicemente restituisce la stringa vuota.
>>> re.search(r'[A-Z]?', 'hello I am Fine').group()
''
Se si desidera trovare la prima lettera maiuscola, non utilizzare un ?
:
>>> re.search(r'[A-Z]', 'hello I am Fine').group()
'I'
È possibile utilizzare il findall metodo.
Dalla documentazione Python , sezione 7.2.5.6
,
findall() matches all occurrences of a pattern, not just the first one as search() does.
Nel tuo caso,
>>> re.findall(r'[A-Z]',"hello I am Fine")
['I', 'F']