Expresie regulată în Python 3.0 nu se potrivesc

voturi
47

Dacă șirul este I am Finecă dă - mi ieșire ca I.

import re
string='hello I am Fine'
print(re.search(r'[A-Z]?',string).group())
Întrebat 28/12/2016 la 03:09
de către utilizator
În alte limbi...                            


2 răspunsuri

voturi
0

Cele mai ?precizează că caracterul precedent sau clasa poate sau nu poate exista. Când re.searchîncepe să caute șirul, nu se constată că clasa de la începutul șirului ... și că este un meci acceptabil din cauza ?. Este pur și simplu întoarce șir gol.

>>> re.search(r'[A-Z]?', 'hello I am Fine').group()
''

Dacă doriți să găsiți prima literă de capital, nu utilizați o ?:

>>> re.search(r'[A-Z]', 'hello I am Fine').group()
'I'
Publicat 28/12/2016 la 03:21
sursa de către utilizator

voturi
1

Puteți utiliza findall metoda.

Din documente Python , secțiune 7.2.5.6,

findall() matches all occurrences of a pattern, not just the first one as search() does.

In cazul tau,

 >>> re.findall(r'[A-Z]',"hello I am Fine")
     ['I', 'F']
Publicat 28/12/2016 la 04:31
sursa de către utilizator

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