Поиск слов в тексте в соответствии с падежами

Существует список фамилий, в именительном падеже, единственном числе, строго с большой буквы. Представим в данном списке есть фамилия Пушкин Также, например, дан текст:

Александр Сергеевич Пушкин — один из величайших русских поэтов и основоположник современного русского литературного языка. Пушкину удалось создать произведения, которые продолжают вдохновлять миллионы читателей. Его творчество, наполненное чувством и глубокими размышлениями, оказало влияние на развитие русской литературы. В произведениях Пушкина, таких как "Евгений Онегин", можно увидеть его мастерство и уникальный стиль. Судьба пушкина была трагической: он погиб в дуэли, оставив после себя богатое наследие. Множество людей по всему миру вдохновляется поэзией Пушкина и его прозой. Мы должны помнить о значимости Александра Сергеевича Пушкина в истории русской культуры и литературы.

Как можно найти в этом тексте упоминания Пушкина в различных падежах, и при этом регистр первой буквы может быть другой (то есть начинаться с маленькой буквы), при отображении найденных слов, при этом, нужно сохранить, либо привести к такому виду, где первая буква в верхнем регистре


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

Автор решения: Nowhere Man

Например, можно определить окончания в разных падежах: родительный/винительный , дательный , творительный -ым, предложный (вероятно, только в единственном числе и/или мужском роде) и искать нужную фамилию с учётом этих падежей при помощи регулярного выражения:

var text = """
Александр Сергеевич Пушкин — один из величайших русских поэтов и основоположник современного русского литературного языка. 
Пушкину удалось создать произведения, которые продолжают вдохновлять миллионы читателей. 
Его творчество, наполненное чувством и глубокими размышлениями, оказало влияние на развитие русской литературы. 
В произведениях Пушкина, таких как "Евгений Онегин", можно увидеть его мастерство и уникальный стиль. 
Судьба пушкина была трагической: он погиб после дуэли, оставив после себя богатое наследие. 
Множество людей по всему миру вдохновляется поэзией Пушкина и его прозой. 
Мы должны помнить о значимости Александра Сергеевича Пушкина в истории русской культуры и литературы.
""";

var name = "(Пушкин)(а|у|ым|е)?"; // первая группа - основа, вторая - окончания
var count = Pattern.compile(name, Pattern.UNICODE_CASE | Pattern.CASE_INSENSITIVE)
    .matcher(text)
    .results()
    .peek(mr -> System.out.println(mr.group())) // отладочный вывод
    .map(mr -> mr.group(1)) // оставить только основу слова
    .count();
System.out.println(count);

Будет найдено шесть совпадений.

Однако следует учесть, что в общем случае могут возникнуть различные коллизии, например:

  • с названием города Пушкин
  • с кратким прилагательным "пушкин" при написании со строчной буквы,
  • с фамилией в женском роде "Пушкина" и её словоформами,
  • со словоформами от названия города Пушкино, для разрешения которых придётся учитывать и анализировать более широкий контекст.
→ Ссылка