V případě, že řetězec je I am Fine
to mi dává výstup jako I
.
import re
string='hello I am Fine'
print(re.search(r'[A-Z]?',string).group())
V případě, že řetězec je I am Fine
to mi dává výstup jako I
.
import re
string='hello I am Fine'
print(re.search(r'[A-Z]?',string).group())
K ?
určuje, že předchozí znak nebo třídy může nebo nemusí existovat. Když re.search
začne hledat řetězec, nenajde tuto třídu na začátku řetězce ... a to je přijatelná shoda to z ?
. Je to prostě vrací prázdný řetězec.
>>> re.search(r'[A-Z]?', 'hello I am Fine').group()
''
Pokud chcete najít první velké písmeno, nemusíte používat ?
:
>>> re.search(r'[A-Z]', 'hello I am Fine').group()
'I'
Můžete použít findall metodu.
Od Python dokumenty , sekce 7.2.5.6
,
findall() matches all occurrences of a pattern, not just the first one as search() does.
Ve vašem případě,
>>> re.findall(r'[A-Z]',"hello I am Fine")
['I', 'F']