Expression régulière en Python 3.0 ne correspond pas à

voix
47

Si la chaîne est I am Finequ'il me donne la sortie comme I.

import re
string='hello I am Fine'
print(re.search(r'[A-Z]?',string).group())
Créé 28/12/2016 à 03:09
utilisateur
Dans d'autres langues...                            


2 réponses

voix
0

Les ?spécifie que le caractère précédent ou de la classe peuvent ou non exister. Quand re.searchcommence la recherche de la chaîne, il ne trouve pas cette classe au début de la chaîne ... et qui est une correspondance acceptable en raison de la ?. Il renvoie simplement la chaîne vide.

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

Si vous voulez trouver la première lettre majuscule, ne pas utiliser ?:

>>> re.search(r'[A-Z]', 'hello I am Fine').group()
'I'
Créé 28/12/2016 à 03:21
source utilisateur

voix
1

Vous pouvez utiliser la findall méthode.

De docs Python , section 7.2.5.6,

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

Dans ton cas,

 >>> re.findall(r'[A-Z]',"hello I am Fine")
     ['I', 'F']
Créé 28/12/2016 à 04:31
source utilisateur

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