Reguliere expressie in Python 3.0 die niet overeenkomen

stemmen
47

Als de string is I am Finehet geeft me uitgevoerd als I.

import re
string='hello I am Fine'
print(re.search(r'[A-Z]?',string).group())
De vraag is gesteld op 28/12/2016 om 03:09
user
In andere talen...                            


2 antwoorden

stemmen
0

Het ?specificeert de voorafgaande teken of klasse wel of niet bestaan. Wanneer re.searchbegint te zoeken de string, is het niet vinden deze klasse aan het begin van de string ... en dat is een acceptabele wedstrijd vanwege het ?. Het is eenvoudig retourneren van de lege string.

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

Als je wilt dat het de eerste hoofdletter, maak je geen gebruik maken van een ?:

>>> re.search(r'[A-Z]', 'hello I am Fine').group()
'I'
antwoordde op 28/12/2016 om 03:21
bron van user

stemmen
1

U kunt het gebruiken findall methode.

Van Python docs , sectie 7.2.5.6,

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

In jouw geval,

 >>> re.findall(r'[A-Z]',"hello I am Fine")
     ['I', 'F']
antwoordde op 28/12/2016 om 04:31
bron van user

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