Если строка I am Fine
это дает мне результат , как I
.
import re
string='hello I am Fine'
print(re.search(r'[A-Z]?',string).group())
Если строка I am Fine
это дает мне результат , как I
.
import re
string='hello I am Fine'
print(re.search(r'[A-Z]?',string).group())
В ?
указывает , что может или не может существовать предыдущий символ или класс. Когда re.search
начинает поиск строки, он не находит этот класс в начале строки ... и что является приемлемым матч из-за ?
. Это просто возвращая пустую строку.
>>> re.search(r'[A-Z]?', 'hello I am Fine').group()
''
Если вы хотите , чтобы найти первую заглавную букву, не использовать ?
:
>>> re.search(r'[A-Z]', 'hello I am Fine').group()
'I'
Вы можете использовать FindAll метод.
Из документации Python , раздел 7.2.5.6
,
findall() matches all occurrences of a pattern, not just the first one as search() does.
В твоем случае,
>>> re.findall(r'[A-Z]',"hello I am Fine")
['I', 'F']