Reguläre Ausdrücke in Python 3.0 nicht passend

stimmen
47

Wenn die Zeichenfolge I am Finewird es geben mir Ausgabe als I.

import re
string='hello I am Fine'
print(re.search(r'[A-Z]?',string).group())
Veröffentlicht am 28/12/2016 um 03:09
vom benutzer
In anderen Sprachen...                            


2 antworten

stimmen
0

Die ?gibt an, dass das vorhergehende Zeichen oder Klasse kann oder kann nicht existieren. Wenn re.searchbeginnt die Zeichenfolge sucht, findet es nicht , dass die Klasse zu Beginn des Strings ... und das ist ein akzeptabler Spiel wegen der ?. Es kehrt einfach die leere Zeichenkette.

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

Wenn Sie es wollen , den ersten Großbuchstaben zu finden, verwenden Sie nicht ein ?:

>>> re.search(r'[A-Z]', 'hello I am Fine').group()
'I'
Beantwortet am 28/12/2016 um 03:21
quelle vom benutzer

stimmen
1

Sie können die Verwendung findall Methode.

Von Python - Dokumentation , Abschnitt 7.2.5.6,

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

In Ihrem Fall,

 >>> re.findall(r'[A-Z]',"hello I am Fine")
     ['I', 'F']
Beantwortet am 28/12/2016 um 04:31
quelle vom benutzer

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