Создание регулярки из букв

Регулярка должна состоять только из русских букв, только ОДНА буква может быть заглавной, без пробелов и других знаков

deep_ocean = '''Окунь форель щУка Щука ФОрель Форель'''
import re
nemo_pattern = '([А-Я][а-я])'
matched_at_begin = re.match (nemo_pattern, deep_ocean)
print (matched_at_begin)

выводит вот это <re.Match object; span=(0, 2), match='Ок'>

Что это значит?


Ответы (2 шт):

Автор решения: Эникейщик

это значит тип данных, который возвращает re.match (). Означает, что найдена подстрока, удовлетворяющая регулярке. span=(0, 2) означает, что найденная подстрока начинается на позиции 0 (т.е. первый символ), заканчивается на позиции 1 (т.е. второй символ). Сама подстрока указана в match.

Чтобы вывести саму найденную подстроку нужно использовать

print (matched_at_begin.group())
→ Ссылка
Автор решения: gil9red

А как насчет такого?

  • \b используется для определения границ
  • * - указывает на от 0 до бесконечного количества совпадений
  • Метод re.findall вернет список

Если будет одна буква в верхнем регистре её тоже должно вытащить, но в таком случае можно отфильтровать список words, оставив в нем те, что имеют больше 1 символа

Пример:

import re
deep_ocean = '''Окунь форель щУка Щука ФОрель Форель'''
nemo_pattern = r'\b([а-я]*[А-Я][а-я]*)\b'
words = re.findall(nemo_pattern, deep_ocean)
print(words)
# ['Окунь', 'щУка', 'Щука', 'Форель']
→ Ссылка