Regular Expression in Python 3.0 non corrispondenti

voti
47

Se la stringa è I am Fineche mi sta dando uscita come I.

import re
string='hello I am Fine'
print(re.search(r'[A-Z]?',string).group())
È pubblicato 28/12/2016 alle 03:09
dall'utente
In altre lingue...                            


2 risposte

voti
0

I ?specifica che il carattere precedente o classe possono o non possono esistere. Quando re.searchinizia 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'
Risposto il 28/12/2016 a 03:21
fonte dall'utente

voti
1

È 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']
Risposto il 28/12/2016 a 04:31
fonte dall'utente

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